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

команды popd pushd

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

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

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

терминал bash

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *