Самые фундаментальные навыки, которые нужно освоить инженеру, работающему с Linux - это перемещение по файловой системе и понимание того, что вас окружает.
В этом разделе мы обсудим инструменты, которые позволят вам это сделать. Разберем базовые команды с примерами.
pwd
Когда вы входите на свой сервер, вы обычно попадаете в домашний каталог своей учетной записи. Домашний каталог - это каталог, предназначенный для хранения файлов и создания каталогов вашим пользователем.
Чтобы узнать, где находится ваш домашний каталог по отношению к остальной файловой системе, вы можете использовать команду pwd
. Эта команда отображает каталог, в котором мы сейчас находимся:
pwd
Вы должны получить обратно информацию, которая выглядит следующим образом:
/home/demo
Домашний каталог назван в честь учетной записи пользователя, поэтому в приведенном выше примере значение будет, если бы вы вошли на сервер с учетной записью под названием demo
. Этот каталог находится в каталоге с именем /home
, который сам находится в каталоге верхнего уровня, который называется root
, но представлен одинарной косой чертой /
.
ls
Теперь, когда вы знаете, как отображать каталог, в котором вы находитесь, мы можем просматривать содержимое каталога.
Пока в нашем каталоге ничего нет, поэтому мы перейдем в другой, более насыщенный каталог для изучения. Введите в терминале следующее, чтобы перейти в каталог /usr/share
.
cd /usr/share
После этого используем pwd
, чтобы проверить, что мы успешно переехали:
/usr/share
Теперь, когда мы находимся в новом каталоге, давайте посмотрим, что внутри. Для этого мы введем команду ls
:
adduser groff pam-configs applications grub perl apport grub-gfxpayload-lists perl5 apps hal pixmaps apt i18n pkgconfig aptitude icons polkit-1 apt-xapian-index info popularity-contest . . .
Как видите, в этом каталоге много элементов. Мы можем добавить в команду несколько необязательных флагов, чтобы изменить поведение. Например, чтобы перечислить все содержимое в расширенной форме, мы можем использовать флаг -l
(для «длинного» вывода):
total 440 drwxr-xr-x 2 root root 4096 Apr 17 2021 adduser drwxr-xr-x 2 root root 4096 Sep 24 19:11 applications drwxr-xr-x 6 root root 4096 Oct 9 18:16 apport drwxr-xr-x 3 root root 4096 Apr 17 2021 apps drwxr-xr-x 2 root root 4096 Oct 9 18:15 apt drwxr-xr-x 2 root root 4096 Apr 17 2021 aptitude drwxr-xr-x 4 root root 4096 Apr 17 2021 apt-xapian-index drwxr-xr-x 2 root root 4096 Apr 17 2021 awk . . .
Этот вид дает нам много информации, большая часть которой выглядит довольно необычно. Первый блок описывает тип файла (если в первом столбце стоит d
, это каталог, если -
, это обычный файл) и разрешения. Каждый последующий столбец, разделенный пробелом, описывает количество жестких ссылок, владельца, владельца группы, размер элемента, время последнего изменения и имя элемента. Вы можете просмотреть эту информацию с помощью флага -l
команды ls
.
Чтобы получить список всех файлов, включая скрытые файлы и каталоги, вы можете добавить флаг -a
. Поскольку в каталоге /usr/share
нет настоящих скрытых файлов, давайте вернемся в наш домашний каталог и попробуем эту команду. Вернуться в домашний каталог можно набрав cd
без аргументов. После этого выполним команду ls -a
:
. .. .bash_logout .bashrc .profile
Как видите, в этом выводе есть три скрытых файла вместе с .
и ..
, которые являются специальными индикаторами. Часто файлы конфигурации хранятся как скрытые файлы, как здесь.
Для записей с точками и двойными точками это не совсем каталоги, а встроенные методы обращения к связанным каталогам. Одиночная точка указывает текущий каталог, а двойная точка указывает родительский каталог этого каталога.
По умолчанию ls
выводит список содержимого текущего каталога. Однако мы можем передать имя любого каталога, содержимое которого мы хотели бы видеть, в конце команды.
Например, мы можем просмотреть содержимое каталога с именем /etc
, доступного во всех системах Linux, набрав:
ls /etc
Получим вывод:
acpi fstab magic rc.local adduser.conf fstab.d magic.mime rc.local.orig aliases fuse.conf mailcap rcS.d aliases.db gai.conf mailcap.order reportbug.conf alternatives groff mailname resolvconf anacrontab group mail.rc resolv.conf apm group- manpath.config rmt . . .
cd
Мы уже сделали два перемещения каталога, чтобы продемонстрировать некоторые свойства ls
. Давайте подробнее рассмотрим команду здесь.
Начните с возврата в каталог /usr/share
, набрав следующее:
cd /usr/share
Это пример изменения каталога путем указания абсолютного пути. В Linux каждый файл и каталог находится в самом верхнем каталоге, который называется «корневым» (root), но обозначается одинарной косой чертой в начале пути /
. Абсолютный путь указывает расположение каталога по отношению к этому каталогу верхнего уровня. Это позволяет нам однозначно обращаться к каталогам из любого места файловой системы. Каждый абсолютный путь должен начинаться с косой черты.
Альтернативой является использование относительных путей. Относительные пути относятся к каталогам относительно текущего каталога. Для каталогов, близких к текущему каталогу в иерархии, это обычно проще и короче. На любой каталог в текущем каталоге можно ссылаться по имени без косой черты в начале. Мы можем перейти в каталог locale
в /usr/share
из нашего текущего местоположения, набрав:
cd locale
Мы также можем переместиться на несколько уровней каталогов с относительными путями, указав часть пути, которая идет после пути к текущему каталогу. Отсюда мы можем перейти в каталог LC_MESSAGES
в каталоге en
, набрав:
cd en/LC_MESSAGES
Для возврата к родительскому элементу текущего каталога мы используем специальный индикатор с двумя точками, о котором мы говорили ранее. Например, теперь мы находимся в каталоге /usr/share/locale/en/LC_MESSAGES
. Чтобы подняться на один уровень вверх, мы можем ввести:
cd ..
Это приведет нас в каталог /usr/share/locale/en
.
Мы можем вернуться в наш предыдущий каталог, набрав: cd -
Шорткат, который вы видели ранее, который всегда будет возвращать вас в ваш домашний каталог - это использовать cd
без указания каталога:
cd