Команда 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. Вы быстро пообвыкните, достаточно немного походить по системе из директории в директорию, а самое главное, цена ошибки минимальна. Попрактикуйте примеры из статьи в рамках вашей системы и вы быстро освоитесь.