ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Команды Pushd и Popd в Linux

Команды Pushd и Popd в Linux

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 повысят вашу производительность и эффективность.

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

Exit mobile version