Команда cd в Linux: полное руководство
cd — одна из первых команд, с которой сталкивается любой, кто заходит на сервер по SSH. Расшифровывается как change directory. Казалось бы, проще некуда — указал путь, перешёл. Но у команды есть несколько нюансов и сокращений, которые реально ускоряют работу в терминале.
Синтаксис
cd [путь]
Без аргументов cd переходит в домашний каталог текущего пользователя — это эквивалент cd ~.
Основные варианты использования
Переход в конкретный каталог
cd /etc/nginx
Абсолютный путь — всегда начинается с /. Не зависит от того, где находится текущий каталог.
cd logs
Относительный путь — переход внутрь подкаталога logs от текущего местоположения.
На уровень выше
cd ..
Два точки — переход в родительский каталог. Можно комбинировать:
cd ../../etc
Поднимается на два уровня вверх, затем заходит в etc.
В домашний каталог
cd
или
cd ~
Оба варианта ведут в /home/username для обычного пользователя или в /root для root.
Тильда работает и в составе пути:
cd ~/projects/myapp
В предыдущий каталог
cd -
Возвращает в каталог, в котором находились до последнего cd. Удобно, когда нужно переключаться между двумя директориями — не нужно каждый раз вводить полный путь.
cd /var/log
cd /etc/nginx
cd - # вернулись в /var/log
cd - # снова в /etc/nginx
💡
cd -выводит путь, в который перешли. Это поведение стандартное для bash и zsh.
В корневой каталог
cd /
Пути с пробелами
Если в названии каталога есть пробелы — нужны кавычки или экранирование:
cd "My Projects"
cd My\ Projects
На серверах имена каталогов с пробелами почти не встречаются, но знать стоит.
Полезные комбинации с другими командами
Посмотреть текущий каталог
После перехода текущий путь отображается в приглашении командной строки. Если нужно вывести явно:
pwd
Посмотреть содержимое после перехода
cd /var/log && ls -lh
&& выполняет вторую команду только если первая прошла успешно. Если каталог не существует — ls не запустится.
Переход с созданием каталога
cd не создаёт несуществующие каталоги. Для этого сначала mkdir:
mkdir -p /opt/myapp/config && cd /opt/myapp/config
Переменная CDPATH
CDPATH — это переменная окружения, которая работает для cd так же, как PATH для исполняемых файлов. Если указать в ней часто используемые каталоги, можно переходить в их подкаталоги без полного пути.
export CDPATH=/var:/etc:/home
После этого команда cd nginx сработает как cd /etc/nginx — bash сам найдёт совпадение. Если совпадений несколько — перейдёт в первое найденное.
Чтобы добавить CDPATH постоянно, нужно прописать экспорт в ~/.bashrc.
Переход в каталог по символической ссылке
cd /var/www/html
Если html — символическая ссылка на другую директорию, cd перейдёт по ней прозрачно. pwd покажет путь через ссылку, а не реальный.
Чтобы увидеть реальный путь:
pwd -P
Флаг -P разворачивает все символические ссылки.
Частые ошибки
No such file or directory
bash: cd: /etc/ngnix: No such file or directory
Опечатка в пути или каталог не существует. Проверить, что есть рядом: ls /etc/ | grep ng.
Permission denied
bash: cd: /root: Permission denied
Недостаточно прав для входа в каталог. Решается через sudo — но sudo cd не работает, так как cd — встроенная команда оболочки. Нужно либо переключиться в root:
sudo -i
cd /root
Либо сменить пользователя:
su - root
cd работает не так, как ожидалось в скрипте
В bash-скриптах cd меняет каталог только для текущего процесса. Если вызвать скрипт как дочерний процесс — изменение не сохранится в родительской оболочке. Это нормальное поведение.
Шпаргалка
| Команда | Что делает |
|---|---|
cd /путь |
Переход по абсолютному пути |
cd папка |
Переход по относительному пути |
cd .. |
На уровень выше |
cd ../.. |
На два уровня выше |
cd или cd ~ |
В домашний каталог |
cd - |
В предыдущий каталог |
cd / |
В корневой каталог |
cd ~/папка |
В подкаталог домашнего каталога |
Итог
cd — простая команда, но cd - и CDPATH заметно ускоряют работу при постоянной навигации по файловой системе. На любом Linux-сервере, в том числе на VPS из каталога PQ.Hosting, поведение команды стандартное — вне зависимости от дистрибутива.