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

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

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

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

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

  • Точка в начале или отсутствие какого-либо спецзнака обозначают текущий каталог.

  • Двумя точками обозначается каталог на уровень выше текущего, т. е. родительский.

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

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

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

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

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

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

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

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

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

Вопросы

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

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

Создано

Обновлено