Стек директорий в Linux: Забудьте про бесконечный cd
Часто ловите себя на том, что «прыгаете» между несколькими глубоко вложенными директориями? Стандартная команда 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 - или продвинутые возможности стека?