Команда cd в Linux: как перейти в нужную папку.

Команда cd — это одна из наиболее востребованных команд в Linux. Вместе с ls они составляют основу навигации в системе.

cd (от change directory) буквально означает – сменить директорию.

Команда позволяет быстро перемещаться в заданную, домашнюю предыдущую и прочие директории, работает как с абсолютным, так и относительным путем.

Общий синтаксис команды cd

В общем виде команда имеет следующий вид:

cd [опции] [путь]

Основные опции:
-L – символические ссылки используются как директории, данная опция используется по умолчанию
-P – символические ссылки заменяются директорией, на которую указывают
-e – используется в связке с  -P, возвращает ненулевой код ответа, если текущая директория не может быть определена

Я подготовил песочницу со следующей структурой:

[root@waky cd_sandbox]# ls -lR
.:
итого 0
drwxr-xr-x. 3 root root 27 июл 30 05:41 directory
lrwxrwxrwx. 1 root root 24 июл 30 05:44 link_directory -> directory/sub_directory/
./directory:
итого 0
drwxr-xr-x. 2 root root 22 июл 30 05:42 sub_directory
./directory/sub_directory:
итого 0
-rw-r--r--. 1 root root 0 июл 30 05:42 file.txt
[root@waky cd_sandbox]#

Текущая директория cd_sandbox, в ней находится директория directory (с поддиректорией sub_directory в ней) и символическая ссылка link_directory (указывающая на directory/sub_directory/). Подробнее о ссылках можно прочитать в отдельной статье.

Наша текущая директория указана прямо в командной стоке

[root@waky cd_sandbox]#

Полный же путь, можно узнать с помощью команды pwd:

[root@waky cd_sandbox]# pwd
/root/cd_sandbox
[root@waky cd_sandbox]#

Переместимся в directory:

[root@waky cd_sandbox]# cd directory/
[root@waky directory]#

Путь можно указывать как относительно текущей директории, так и абсолютный, например:

[root@waky directory]# cd /root/cd_sandbox/directory/sub_directory/
[root@waky sub_directory]#

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

[root@waky sub_directory]# cd ../
[root@waky directory]#

В данном случае .. означает директорию на один уровень выше текущей.

[root@waky directory]# cd ../
[root@waky cd_sandbox]#

Еще одна переменная, которая активно используется в задании пути – ~. Означает домашнюю директорию текущего пользователя.

[root@waky cd_sandbox]# cd ~
[root@waky ~]# pwd
/root
[root@waky ~]#

Использование cd совсем без указания пути, так же вернет вас в домашнюю директорию.

Для возвращения в предыдущую директорию используйте знак :

[root@waky ~]# cd -
/root/cd_sandbox
[root@waky cd_sandbox]#

Давайте разберемся в чем разница между опциями -L и -P.  Символическая ссылка link_directory указывает на directory/sub_directory/ попробуем использовать ссылку в пути:

[root@waky cd_sandbox]# cd -L link_directory/
[root@waky link_directory]# pwd
/root/cd_sandbox/link_directory
[root@waky link_directory]# ls
file.txt
[root@waky link_directory]#

Как видим, в нашем пути используется имя ссылки: /root/cd_sandbox/link_directory при этом, link_directory не является отдельной директорией, мы фактически перешли в sub_directory.

Вернемся к предыдущей локации и повторим пример, с другой опцией:

[root@waky link_directory]# cd -
/root/cd_sandbox
[root@waky cd_sandbox]# cd -P link_directory/
[root@waky sub_directory]# pwd
/root/cd_sandbox/directory/sub_directory
[root@waky sub_directory]# ls
file.txt
[root@waky sub_directory]#

Хотя мы и использовали ссылку, ее имя было заменено реальным объектом.

Команда cd проста и безотказна, однако не забывайте, что она так же подчиняется правилам доступов в Linux.

Если вы сталкиваетесь с невозможностью перейти в каталог с ошибкой «доступ запрещен», проверьте, какие правила доступа заданы для вашего пользователя на директории. Для доступа должно присутствовать разрешение на исполнение (x).

Заключение

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