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

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

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

Оставьте комментарий

Ваш адрес email не будет опубликован.