pushd
и popd
— это команды, которые позволяют вам работать со стеком каталогов и изменять текущий рабочий каталог в Linux и других Unix-подобных операционных системах. Хотя pushd
и popd
— очень мощные и полезные команды, они недооцениваются и используются редко.
В этом руководстве мы покажем вам, как использовать команды pushd
и popd
для навигации по дереву каталогов вашей системы.
Стек каталогов
Стек каталогов — это список каталогов, к которым вы ранее переходили. Содержимое стека каталогов можно увидеть с помощью команды dirs
. Каталоги добавляются в стек при переходе в каталог с помощью команды pushd
и удаляются с popd
команды popd
.
Текущий рабочий каталог всегда находится наверху стека каталогов. Текущий рабочий каталог — это каталог (папка), в котором в настоящее время работает пользователь. Каждый раз, когда вы взаимодействуете с командной строкой, вы работаете в каталоге.
Команда pwd
позволяет узнать, в каком каталоге вы сейчас находитесь.
При навигации по файловой системе используйте клавишу Tab
для автозаполнения имен каталогов. Добавление косой черты в конце имени каталога необязательно.
pushd
, popd
и dirs
являются встроенными popd
оболочки, и их поведение может немного отличаться от оболочки к оболочке. Мы рассмотрим встроенную в Bash версию команд.
Команда pushd
Синтаксис команды pushd
следующий:
pushd [OPTIONS] [DIRECTORY]
Например, чтобы сохранить текущий каталог в верхней части стека каталогов и перейти на /var/www
, введите:
~$ pushd /var/www
В случае успеха приведенная выше команда распечатает стек каталогов. ~
— это каталог, в котором мы выполнили команду pushd
. Символ тильды ~
означает домашний каталог.
/var/www ~
pushd
сначала сохраняет текущий рабочий каталог в верхнюю часть стека, а затем переходит в данный каталог. Поскольку текущий каталог всегда должен быть наверху стека, после изменения новый текущий каталог переходит в верхнюю часть стека, но не сохраняется в стеке. Чтобы сохранить его, вы должны вызвать из него pushd
. Если вы используете cd
для перехода в другой каталог, верхний элемент стека будет потерян,
Добавим в стек еще один каталог:
/var/www$ pushd /opt
/opt /var/www ~
Чтобы запретить переход в каталог, используйте параметр -n
. Например, чтобы добавить каталог /usr/local
в стек, но не изменять его, введите:
/opt$ pushd -n /usr/local
Поскольку текущий каталог (который всегда находится наверху) не меняется, каталог /usr/local
добавляется вторым сверху в стек:
/opt /usr/local /var/www ~
Команда pushd
принимает две опции, +N
и -N
которые позволяют перейти в Nth
каталог стека. Опция +N
Nth
элемент списка стека, считая слева направо, начиная с нуля. Когда используется -N
счет идет справа налево.
Чтобы лучше проиллюстрировать варианты, распечатаем текущий стек каталогов:
/opt$ dirs -l -v
На выходе будет показан индексированный список стека каталогов:
0 /opt
1 /usr/local
2 /var/www
3 /home/linuxize
Если вы хотите перейти в каталог /var/www
и переместить его в верхнюю часть стека, вы воспользуетесь одним из следующих способов.
При подсчете сверху вниз (или слева направо) индекс каталога равен 2
.
pushd +2
При подсчете снизу вверх индекс каталога /var/www
равен 1
.
pushd -1.
При использовании без аргументов pushd
переключит два верхних каталога и сделает новый верхний каталог текущим. Это то же самое, что и при использовании команды cd -
.
popd
Команда popd
принимает вид:
popd [OPTIONS]
При использовании без аргументов popd
удаляет верхний каталог из стека и переходит в новый верхний каталог.
Допустим, у нас есть следующий стек каталогов:
/opt /usr/local /var/www /etc/nginx ~
Если вы запустите команду popd
она удалит /opt
из стека и popd
в popd
/usr/local
:
/opt$ popd
Вывод покажет новый стек каталогов:
/usr/local /var/www /etc/nginx ~
Параметр -n
подавляет изменение каталога по умолчанию и удаляет второй элемент из стека:
/opt$ popd -n
/usr/local /etc/nginx ~
Как и pushd
, popd
также принимает параметры +N
и -N
, которые можно использовать для удаления Nth
каталога стека.
/opt$ popd +1
/usr/local ~
Выводы
Обычно вы используете команду cd
для перехода из одного каталога в другой. Однако, если вы проводите много времени в командной строке, команды pushd
и popd
повысят вашу продуктивность и эффективность.
Добавить комментарий