 | Работа с файлами и каталогами в Bash
Большая часть работы, производимая в Bash, связана с файловой системой UNIX. Каждый, кто когда-либо использовал менеджер файлов, наверняка представляет себе файловую систему как дерево. То же самое верно и для командной строки. Все файлы и каталоги берут свое начало из каталога /, являющегося корневым узлом всей файловой системы. В таблице 2 приводится список стандартных каталогов, которые имеются в большинстве UNIX-систем.
Таблица 2. Стандартные каталоги UNIX-систем
| Каталог | Расписание |
|---|
| / | Корневой каталог для всех UNIX-систем; содержит все остальные файлы. | | /bin | Содержит бинарные версии файлов системных приложений, таких как файл самой командной оболочки Bash. | | /dev | Каталог содержит псевдофайлы, представляющие физические устройства, такие как жесткие диски. | | /etc | В этом каталоге хранится большая часть конфигурационных файлов системы. | | /lib | Каталог содержит файлы библиотек, необходимых для системных приложений. | | /opt | Каталог содержит необязательные компоненты системы или приложения. | | /tmp | Каталог содержит временные файлы, используемые системой или пользовательскими приложениями. | | /usr | Содержит пользовательские и некритичные для работы системы приложения и связанные компоненты. | | /var | Каталог содержит различные файлы, необходимые для системных приложений, такие как файлы журналов и файлы буферов. |
Работа с каталогами в Bash
В UNIX есть несколько команд, которые позволяют легко создавать, просматривать, удалять каталоги и изменять текущий рабочий каталог:
-
cd cизменяет текущий рабочий каталог на домашний каталог пользователя.
-
cd dirname изменяет текущий рабочий каталог на каталог dirname.
-
ls dirname выводит список содержимого каталога dirname.
-
mkdir dirname создает новый каталог с именем dirname.
-
pwd выводит полный путь к текущему рабочему каталогу.
-
rmdir dirname удаляет каталог с именем dirname.
Чтобы выполнить любую из этих команд, нужно просто набрать команду в командной строке Bash (включая необходимое имя каталога) и нажать клавишу Enter.
Есть также несколько полезных сокращений для имен каталогов:
- Одиночная точка (
.) обозначает текущий рабочий каталог.
- Две точки (
..) обозначают родительский каталог текущего рабочего.
- Тильда (
~) обозначает домашний каталог пользователя (обычно это каталог, который является текущим рабочим при запуске Bash).
В листинге 3 показано, насколько просто использовать эти команды.
Листинг 3. Работа с каталогами в Bash
rb$ pwd
/home/rb
rb$ mkdir temp
rb$ cd temp
rb$ ls
rb$ cd ..
rb$ pwd
/home/rb
rb$ rmdir temp
rb$ ls ..
lost+found rb root
rb$ ls /
bin etc lib misc proc usr
boot home lost+found mnt tmp var
dev initrd opt sbin sys
|
Команды, выполняемые в предыдущем листинге, достаточно просты. Первая из них выводит на экран путь к текущему рабочему каталогу. Следующими командами создается новый каталог с именем temp, рабочий каталог изменяется на созданный, выводится содержимое этого каталога (на экран не выводится ничего, поскольку каталог пуст). Затем рабочий каталог изменяется на родительский, проверяется, что он совпадает с тем, с которого была начата работа, и только что созданный каталог удаляется. Наконец, выводится содержимое родительского для домашнего каталога пользователя (то есть каталога /home) и содержимое корневого каталога файловой системы.
Работа с файлами в Bash
При работе в Bash можно использовать множество команд, которые работают напрямую с файлами. Полный список таких команд весьма обширен, но вот некоторые наиболее полезные:
-
cp file1 file2 копирует file1 в file2.
-
mv file1 file2 переименовывает file1 в file2.
-
mv filename dirname перемещает файл filename в каталог dirname .
-
less filename отображает содержимое файла в формате, удобном для чтения в окне терминала.
-
file filename указывает наиболее вероятный тип файла
-
cat filename выводит все содержимое файла.
-
head filename отображает первые десять строк файла (точное число отображаемых строк можно задавать).
-
tail filename отображает последние десять строк файла (точное число отображаемых строк можно задавать).
-
diff file1 file2 отображает различия, если они существуют, между файлами file1 и file2.
-
grep string filename ищет в файле строки, содержащие string.
-
rm filename удаляет файл.
В листинге 4 демонстрируется, насколько просто использовать представленные в списке команды. Начинающим пользователям полезно запустить терминал и попробовать эти команды в действии. Нужно помнить, что полная информация по работе программ содержится в руководствах man. Например, набрав команду man cp, можно прочитать соответствующую страницу руководства по команде копирования.
Листинг 4. Работа с файлами в Bash
rb$ $ cp .bashrc old.bashrc
rb$ diff old.bashrc .bashrc
rb$ cat ~/.bash_profile
source ~/.bashrc
rb$ cat ~/.bashrc
export PS1='\u\$ '
export DERBY_INSTALL='/opt/Apache/db-derby-10.1.2.1-bin'
export CLASSPATH=$DERBY_INSTALL/lib/derby.jar:$DERBY_INSTALL/lib/derbytools.jar:.
rb$ head -4 /usr/share/dict/web2
A
a
aa
aal
rb$ tail -4 /usr/share/dict/web2
Zythia
zythum
Zyzomys
Zyzzogeton
rb$ grep exuberance /usr/share/dict/web2
exuberance
rb$ file bash-tutorial.zip
bash-tutorial.zip: Zip archive data, at least v2.0 to extract
rb$ file bash-tutorial.xml
bash-tutorial.xml: XML document text
|
Команды работы с файлами, представленные в листинге, просты и сопровождаются примерами копирования файлов, просмотра содержимого, поиска вхождения определенных строк и распознавания типа для различных файлов. Прежде всего с помощью команды копирования мы создаем дубликат файла .bashrc, который будет обсуждаться позже. Этот файл позволяет настраивать поведение и внешний вид командной оболочки Bash. Можно воспользоваться командой diff, чтобы убедиться, что эти файлы действительно одинаковы - а поскольку это так, никаких различий выведено не будет. Затем с помощью команды cat мы отображаем содержимое файлов .bash_profile и .bashrc. Содержимое этих двух файлов будет обсуждаться детально в следующем разделе.
В следующих двух примерах листинга с помощью команд head и tail выводятся первые и последние строки файла соответственно. Указанный в этих примерах флаг -4 задает вывод на экран только четырех строк вместо принятых по умолчанию десяти. Далее с помощью команды grep мы находим вхождения строки exuberance в словаре, установленном на компьютере. Наконец, в последних двух примерах с помощью команды file отображаются типы двух различных файлов.
|  |