pushd и popd это команды, которые позволяют вам работать со стеком каталогов и изменять текущий рабочий каталог в Linux и других Unix-подобных операционных системах. Хотя pushd и popd являются очень мощными и полезными командами, они недооценены и используются редко.
В этой статье мы покажем вам, как использовать команды pushd и popd для перемещения дерева каталогов вашей системы.
Стек каталогов представляет собой список каталогов, к которым вы ранее обращались. Содержимое стека каталогов можно увидеть с помощью команды dirs. Каталоги добавляются в стек при переходе в каталог с помощью команды pushd и удаляются с помощью команды popd.
Текущий рабочий каталог всегда находится на вершине стека каталогов. Текущий рабочий каталог является каталогом (папка), в котором в настоящее время работает пользователь. Каждый раз, когда вы взаимодействуете с командной строкой, вы работаете в директории.
Команда pwd позволяет узнать, в каком каталоге вы сейчас находитесь.
При навигации по файловой системе используйте клавишу Tab для автозаполнения имен каталогов. Добавление косой черты в конце имени каталога не является обязательным.
pushd и popd, являются встроенными функциями оболочки, и его поведение может слегка отличаться от оболочки к оболочке. Мы рассмотрим встроенную версию команд Bash.
Синтаксис 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 [OPTIONS]
При использовании без аргументов popd удаляет верхний каталог из стека и переходит в новый верхний каталог.
Допустим, у нас есть следующий стек каталогов:
/opt /usr/local /var/www /etc/nginx ~
Если вы запустите popdкоманду, она удалит /opt из стека и перейдет в каталог /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 повысят вашу производительность и эффективность.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.