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