Використання команд pushd і popd у Linux

Навігація складними структурами каталогів у терміналі Linux може забирати багато часу, особливо під час системного адміністрування або написання сценаріїв. Хоча cd (змінити каталог) є основною командою для навігації по каталогах, їй бракує можливості керувати стеком каталогів – цю функцію надають команди pushd і popd.

У цій статті ми детально розглянемо команди pushd і popd і покажемо, як спростити навігацію по каталогах і зробити робочий процес у терміналі ефективнішим.

Що таке pushd і popd?

  • pushd ( виштовхує каталог) зберігає ваш поточний каталог у стек, а потім переходить до нового каталогу.

  • popd (pop каталог) видаляє верхній каталог зі стека і повертає вас до попереднього.

Ці команди є частиною механізму стеку каталогів, доступного у bash, zsh та інших сучасних оболонках.

Коли їх слід використовувати

командиpushd і popd незамінні у наступних випадках:

  • Ви часто переміщуєтесь між двома або більше каталогами.

  • Ви пишете скрипти командного інтерпретатора, які потребують тимчасового перемикання каталогів.

  • Ви хочете уникнути забруднення оболонки непотрібними командами cd і зберегти контекст.

Базове використання

1. команда pushd

pushd /шлях/до/цілі
  • Переміщує поточний каталог до стеку.

  • Змінює каталог на /шлях/до/цілі.

приклад:

cd ~
pushd /var/www/html

Тепер ви знаходитесь в /var/www/html, а ваш домашній каталог ~ зберігається в стеку.

2. popd Команда popd

popd
  • Витягує верхній каталог зі стека.

  • Повертає вас до попереднього каталогу.

Продовжуючи приклад вище:

popd

Ви повернетесь до каталогу ~.

Робота зі стеком каталогів

Використовуйте dirs для перегляду поточного стану стека каталогів:

dirs -v

Приклад виведення:

0 /var/www/html
1 /home/user
  • Індекс 0 – це ваш поточний каталог.

  • Вищі індекси вказують на попередні каталоги.

Переміщення поточного каталогу без перемикання

Ви можете використовувати

pushd.

щоб виштовхнути поточний каталог до стеку без зміни каталогів.

Реальні приклади

Приклад 1: Перехід між каталогами коду і збірки

pushd ~/projects/myapp/src
# Виконати редагування
pushd../build
make && make install
popd # Назад до src
popd # Повернутися до початкового каталогу

Ефективно для ітеративної розробки без повторюваних команд cd.

Приклад 2: Обертання у скрипт оболонки

Ось скрипт, який збирає код у тимчасовому каталозі і повертається в чистому вигляді:

Якщо скрипт зазнає невдачі всередині /tmp/build-env, ви все одно повернетеся до початкового розташування.

Поради та найкращі практики

Використовуйте pushd over cd у скриптах

Це робить ваші скрипти більш зручними для супроводу, особливо у разі виникнення помилок – ви можете безпечно повернутися до початкового каталогу.

Комбінуйте з dirs -v для налагодження стека

При роботі з декількома викликами pushd, dirs -v допомагає відстежувати історію навігації.

Використання індексів з popd

Ви можете вилучити певний каталог зі стека:

popd 1

Видаляє каталог з індексом 1 (не обов’язково поточний).

Поширені помилки

  • Переповнення стеку (не сайту 😄): Надмірне використання pushd без відповідних викликів popd може переповнити ваш стек, що призведе до плутанини у стані каталогів.

  • Не всюди доступні: pushd і popd вбудовані в bash, zsh і подібні оболонки – вони можуть бути недоступні в мінімальних оболонках, таких як sh.

  • Не постійний: Стек каталогів базується на сеансах роботи. Після завершення сеансу роботи у терміналі стек скидається.

Псевдоніми для досвідчених користувачів

У вашому .bashrc або.zshrc додайте:

alias pd='pushd'
alias pp='popd'
alias dl='dirs -v'

Це зменшить кількість натискань клавіш і підвищить продуктивність.