Часто ловите себя на том, что «прыгаете» между несколькими глубоко вложенными директориями? Стандартная команда cd - (или использование переменной $OLDPWD) выручает, когда нужно вернуться в предыдущую папку, но у неё есть серьезное ограничение: она помнит только один последний путь. Если вы перешли в третью папку, путь к первой будет потерян.

Для более сложной и эффективной навигации в Bash существует стек директорий, управляемый командами pushd и popd. Это гораздо мощнее, чем обычный переход с помощью дефиса.

Как работает стек директорий

Представьте стек как стопку тарелок: вы кладете текущий адрес наверх, а когда он больше не нужен — просто убираете его, и автоматически оказываетесь в предыдущем месте.

1. pushd: Перейти и запомнить

Команда pushd работает как cd, но при этом сохраняет текущую директорию в памяти (стеке).

# Зайти в любую папку и добавить её в стек
pushd /var/log/nginx

# Сделать свои дела
ls -la

# Вернуться в предыдущую директорию (и одновременно вытолкнуть текущую из стека)
popd

2. Реальный кейс использования

Допустим, вы правите конфиги Nginx, а затем вам нужно заглянуть в логи, сохранив возможность быстро вернуться назад. Вы можете выстраивать целые цепочки переходов:

$ pushd /etc/nginx/sites-available
/etc/nginx/sites-available ~/projects
$ pushd /var/log
/var/log /etc/nginx/sites-available ~/projects
$ popd
/etc/nginx/sites-available ~/projects
$ popd
~/projects

Каждый раз, когда вы вызываете popd, система возвращает вас на один шаг назад по вашей «истории перемещений».

Визуализация стека: команда dirs

Чтобы не запутаться, где именно вы находитесь в иерархии стека, используйте команду dirs. С флагом -v она покажет пронумерованный список всех сохраненных путей.

dirs -v

Лайфхак: Чтобы не вводить флаг каждый раз, добавьте в свой .bashrc полезный алиас:

alias dirs='dirs -v'

Заключение

Использование pushd и popd превращает перемещение по файловой системе в предсказуемый и управляемый процесс. Если же вы ищете еще более современные способы ускорить работу в терминале, обратите внимание на утилиту Zoxide, которая обучается на ваших привычках.

А какие инструменты навигации предпочитаете вы: классику cd - или продвинутые возможности стека?