Команда cd. Абсолютная и относительная адресация

Часто выполняемыми задачами в командной строке являются просмотр содержимого каталога и переход в другой, т. е. изменение текущего каталога. В Bash по-умолчанию текущим является домашний каталог пользователя. Чтобы сделать текущим другой, используется команда cd.

Ее применение аналогично тому, когда в графическом режиме вы переходите в разные папки с помощью вашего обычного файлового менеджера (файлового браузера). Текущей папкой можно считать ту, которую вы открыли в данный момент.

В качестве аргумента команде cd передается адрес директории, в которую мы хотим перейти (которую хотим сделать текущей). Адрес может быть задан двумя способами: с помощью абсолютной или относительной адресации.

В случае абсолютной адресации путь к каталогу указывается, начиная с корневого каталога, и далее вниз по дереву папок до требуемого. Так все следующие записи являются абсолютными адресами: /home/pl/Desktop, /boot, /etc/vim. Первый знак слэша (/) обозначает корневой каталог.

При относительной адресации путь к каталогу указывается, начиная с текущего каталога (другими словами, относительно текущего каталога). Когда используется относительная адресация, слэш никогда не бывает первым знаком. В случае относительного адреса начало может быть одним из следующих:

Примеры относительных адресов: ./Documents/images, Documents/images, ../test. Первые два адреса указывают на одно и то же: каталог (images), вложенный в каталог (Documents), который вложен в текущий. Точку-слэш имеет смысл ставить только перед исполняемыми файлами. Иначе Bash будет искать программу в системных каталогах, а не текущем.

Адрес ../test говорит, что надо подняться на один уровень выше текущего в иерархии папок. Уже оттуда перейти в имеющийся там каталог test.

Адрес каталога на уровень выше родительского

В любую директорию можно перейти, используя как абсолютный, так относительный адрес. Однако уместность использования адресов зависит от ситуации. Так если требуется перейти в корневой каталог, то проще написать /, то есть абсолютный адрес. Если необходимо узнать содержимое каталога, вложенного в текущий, достаточно просто написать название нужной папки, то есть использовать относительную адресацию.

В командной оболочке Linux можно выделить еще один способ адресации – адрес относительно домашнего каталога пользователя. Обозначается домашний каталог знаком тильды (~). Так из любого каталога адрес ~ заставит обратиться в домашнюю папку. А адрес ~/Documents во вложенную в домашнюю.

Вернемся к команде cd. В Bash ее используют для перемещения по дереву каталогов, передавая ей в качестве аргумента адрес места назначения.

Переход в каталог

В примере выше, используя относительную адресацию, мы переходим в каталог bin. Обратим внимание, что после перехода изменилось приглашение командной строки. Теперь в нем указан адрес относительно домашнего каталога. В папке bin мы запускаем скрипт pycharm.sh. Здесь также используется относительная адресация, но через точку, обозначающую текущий каталог.

Переход в домашний каталог

Если команде cd не передавать аргумент, то она сделает текущим домашний каталог пользователя, где бы вы до этого не находились. На скрине выше с помощью абсолютного адреса мы переходим в каталог /opt/google. После этого в приглашении Bash используется абсолютный адрес.

Однако даже если вы используете абсолютную адресацию, но каталог находится в домашней папке пользователя, не важно на какой глубине, то приглашение Bash будет содержать адрес относительно домашнего каталога, т. е. через тильду.

Переход по абсолютному адресу

Следует помнить одну полезную особенность – это автодополнение при нажатии клавиши Tab. Для адресов оно работает также как для команд.

Вопросы

  1. Вы находитесь в домашнем каталоге. Где вы окажитесь после выполнения команды cd ../..?

  2. На ваш взгляд, какой может быть смысл в том, что при автодополнении Bash подставляет слэш в конце адреса? Например, сработает и так: cd programs. Но Bash предпочтет cd programs/.