Bash и Git: Мгновенное Переключение Между Директориями и Ветками с Помощью Символа «-«
Маленький, но невероятно эффективный приём для тех, кто ежедневно работает с Linux и Git: использование символа - для мгновенного возврата в предыдущую директорию или на предыдущую ветку. Этот простой, но мощный трюк значительно экономит время, избавляя от рутинного ввода длинных путей.
Bash и удобство навигации
Если вы системный администратор, DevOps-инженер или разработчик, ваша работа в Bash терминале часто связана с переключением между различными директориями и Git-ветками. Традиционно это выглядит как многократное использование cd <path>:
cd /var/www/project
# поработали
cd /etc/nginx
# снова вернуться
cd /var/www/project
Лишний ввод символов и повторяющиеся действия можно избежать. В Bash и большинстве современных оболочек (таких как Zsh, Fish) существует очень удобный приём:
cd -
Эта команда мгновенно переместит вас обратно в предыдущую директорию.
Как это работает
Механизм работы прост и основан на встроенной функциональности оболочки. Каждый раз, когда вы выполняете команду cd, Bash автоматически сохраняет путь к текущей директории в специальную переменную окружения OLDPWD. Таким образом, команда cd - по сути является более лаконичной формой для cd $OLDPWD, но писать cd - гораздо удобнее и быстрее.
Пример использования
Представьте сценарий, где вы часто переключаетесь между директорией проекта и конфигурационными файлами Nginx:
cd /var/www/myproject
cd /etc/nginx
Теперь, чтобы мгновенно вернуться в директорию проекта, достаточно:
cd -
Результат:
/var/www/myproject
Если вы выполните cd - ещё раз, то снова окажетесь в /etc/nginx. То есть, эта команда позволяет быстро переключаться между двумя последними рабочими директориями. Это особенно удобно при отладке и внесении изменений в файлы.
Практический сценарий для администратора
Например, администратору нужно внести изменения в конфигурацию Nginx, а затем быстро проверить файлы веб-сайта:
cd /etc/nginx
nano nginx.conf
cd /var/www/site
ls
cd -
После выполнения cd - вы снова окажетесь в директории /etc/nginx, готовые продолжить работу с конфигурацией.
Этот же трюк работает и в Git
Интересно, что символ - используется и в Git для аналогичной логики. Команда git switch - переключит вас на предыдущую активную ветку.
Пример:
git switch feature-auth
# Проверили что-то
git switch main
# Вернуться обратно
git switch -
Git автоматически переключит вас обратно на ветку feature-auth. Это чрезвычайно удобно при частых переключениях между несколькими ветками разработки.
Ещё один полезный трюк
Вы также можете быстро просмотреть путь к предыдущей директории или использовать её напрямую, хотя cd - остаётся самым быстрым и элегантным решением:
echo $OLDPWD
cd $OLDPWD
Итог
Символ - в терминале — это маленький, но невероятно удобный плейсхолдер для обозначения предыдущего местоположения. Он эффективно работает:
- в Bash
- в Zsh
- в большинстве Unix-оболочек
- в Git
И позволяет мгновенно переключаться:
- между директориями
- между Git-ветками
Такие, казалось бы, незначительные трюки на самом деле значительно повышают продуктивность и делают работу в командной строке быстрее и приятнее.