Чтобы иметь возможность ориентироваться в файловой системе, нужно знать, что содержится в каждом каталоге. Запомнить всю структуру файловой системы невозможно и не нужно: в любой момент можно просмотреть содержимое любого каталога при помощи утилиты ls
(сокращение от англ. ”list” - ”список”):
[ivan@localhost ivan]$ ls
-filename-with- text
[ivan@localhost ivan]$
Поданная без параметров, команда ls
выводит список файлов и каталогов, содержащихся в текущем каталоге. При помощи этой утилиты Иван обнаружил, что в его домашнем каталоге (который в данный момент является текущим) содержатся два файла, созданные в примере, приведенном в предыдущей лекции: ”-filename-with-” и ”text”.
Утилита ls
принимает один параметр: имя каталога, содержимое которого нужно вывести. Имя может быть задано любым доступным способом: в виде полного или относительного пути. Например, чтобы получить список файлов в своем домашнем каталоге, Иван мог бы использовать команды ls /home/ivan
и ls .
- результат был бы аналогичным.
Кроме параметра, утилита ls
”понимает” множество ключей, которые нужны главным образом для того, чтобы выводить дополнительную информацию о файлах в каталоге или выводить список файлов выборочно. Чтобы узнать обо всех возможностях ls
, нужно, конечно же, прочесть руководство по этой утилите (man ls
).
Почитав руководство по ls
, Иван решил изучить содержимое своей файловой системы и начал с корневого каталога:
[ivan@localhost ivan]$ ls -F /
bin/ dev/ home/ mnt/ root/ swap/ tmp/ var/
boot/ etc/ lib/ proc/ sbin/ sys/ usr/
[ivan@localhost ivan]$
Пример 4.5. Команда ls -F
Иван использовал ключ -F
, чтобы отличать файлы от каталогов. При наличии этого ключа ls
в конце имени каждого каталога ставит символ /
, чтобы показать, что в нем может содержаться что-то еще. В выведенном списке нет ни одного файла - в корневом каталоге содержатся только подкаталоги.
Кроме того, Иван решил получить более подробную информацию о содержимом своего домашнего каталога:
[ivan@localhost ivan]$ ls -aF
-filename-with- .bash_history .bashrc .lpoptions
.rpmmacros Documents/
./ .bash_logout .emacs .mutt/ .xemacs/ text
../ .bash_profile .i18n .pinerc .xsession.d/ tmp/
[ivan@localhost ivan]$
Пример 4.6. Команда ls -aF
Внезапно он обнаружил, что файлов в его домашнем каталоге не два, а гораздо больше. Дело в том, что утилита ls
по умолчанию не выводит информацию об объектах, чье имя начинается с .
- в том числе о .
и ..
. Для того чтобы посмотреть полный список содержимого каталога, и используется ключ -a
(all). Как правило, с .
начинаются имена конфигурационных файлов и конфигурационных каталогов (вроде .bashrc
, описанного в лекции 8), работа с которыми (т. е. настройка окружения, “рабочего места”) не пересекается с работой над какой-нибудь прикладной задачей (хотя, конечно, эффективность работы зависит от хорошо настроенного окружения). Кроме того, подобных файлов в домашнем каталоге активно работающего пользователя со временем заводится немало (по одному на каждую приличную утилиту) и их присутствие в выдаче ls
сильно загромождает выводимые данные.
Разберемся подробно в списке файлов в домашнем каталоге Ивана. Начнем с весьма лаконичных имен .
и ..
. Иван уже знает, что .
- это имя текущего каталога. Следующее имя в списке, ..
- это ссылка на родительский каталог. Родительский каталог — это тот каталог, в котором находится данный каталог . Родительским каталогом для /home/ivan
будет каталог /home
: он получается просто отбрасыванием последнего имени каталога в полном пути. Иначе можно сказать, что родительский каталог - это один шаг по дереву каталогов по направлению к корню. ..
- это сокращенный способ сослаться на родительский каталог: пока текущим каталогом является /home/ivan
, относительный путь ..
(или, что то же самое, ./..
) будет эквивалентен /home
. С использованием ..
можно строить сколь угодно длинные пути, такие как ../../usr/../var/log/../run/../../home
.
Однако в действительности они применяются только при автоматической подстановке в программах, а во время работы пользователя необходимости в такого рода усложнениях не возникает.
Родительский каталог (parent directory) — это каталог, в котором содержится данный. Для корневого каталога родительским является он сам.
Ссылки на текущий и на родительский каталог обязательно присутствуют в каждом каталоге в Linux. Даже если каталог пуст, т. е. не содержит ни одного файла или подкаталога, команда ls -a
выведет список из двух имен: .
и ..
.
За ссылками на текущий и родительский каталоги следуют несколько файлов и каталогов, имена которых начинаются с “ .”. В них содержатся настройки командной оболочки (файлы, начинающиеся с .bash
) и других программ. В домашнем каталоге каждого пользователя Linux всегда присутствует несколько таких файлов. Использование этих файлов позволяет пользователям независимо друг от друга настраивать поведение командной оболочки и других программ - организовывать свое “рабочее место” в системе. Подробнее речь об этом пойдет в лекции 12.
Домашний каталог | Перемещение по дереву каталогов |