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

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

10 Января 2020 | Терминал

В этом руководстве мы покажем вам , как использовать pushd и popd команды для перемещения дерева каталогов вашей системы.

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

pushd и popd - это команды, которые позволяют вам работать со стеком каталогов и изменять текущий рабочий каталог в Linux и других Unix-подобных операционных системах. Хотя pushd и popd являются очень мощными и полезными командами, они недооценены и используются редко.

Стек каталогов 

Стек каталогов представляет собой список каталогов, к которым вы ранее обращались. Содержимое стека каталогов можно увидеть с помощью dirs команды. Каталоги добавляются в стек при переходе в каталог с помощью pushdкоманды и удаляются с помощью popd команды.

Текущий рабочий каталог всегда находится на вершине стека каталогов. Текущий рабочий каталог является каталогом (папка) , в котором пользователь в настоящее время работает в. Каждый раз , когда вы взаимодействуете с командной строкой, вы работаете в директории.

Команда pwdпозволяет узнать, в каком каталоге вы сейчас находитесь.

При навигации по файловой системе используйте Tab клавишу для автозаполнения имен каталогов. Добавление косой черты в конце имени каталога не является обязательным.

pushd, popd И dirs являются оболочками встроенных функций , и его поведение может слегка отличаться от оболочки к оболочке. Мы рассмотрим встроенную версию команд 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 из стека и перейдет в /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 команды повысят вашу производительность и эффективность.


    Комментарии

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

Загрузка комментариев...