Представим такой рабочий процесс, когда нам нужно перемещаться между 4 каталогами, расположенными по совершенно разным путям.
Использовать "cd -" не вариант, т.к. оболочка запоминает только 1 прошлый каталог. Можно использовать CDPATH, но тогда нужно запоминать названия директорий, с которыми работаем.
Команды оболочки pushd, popd и dirs позволяют обойти это ограничение. Предположим, вы создаете локальный сайт и работаете с ресурсами:
/var/www/html
/etc/apache2
/etc/ssl/certs
~/Web/src
Быстро переключаться между ними можно с помощью функции оболочки - "стеком каталогов".
Стек каталогов — это список директорий, которые вы посетили и решили отслеживать в текущем экземпляре оболочки. Изначально он содержит только текущий путь.
Просмотреть стек можно, используя команду dirs:
$ dirs
/etc/ssl/certs /etc/apache2 /var/www/html ~/Web/src
Вывод команды можно напечатать столбцом "-p":
$ dirs -p
/etc/ssl/certs
/etc/apache2
...
А можно и пронумеровать "-v". Это нам позволит вдальнейшем удобнее переключаться между каталогами:
$ dirs -v
0 /etc/ssl/certs
1 /etc/apache2
...
Вы управляете стеком, выполняя две операции: pushing и popping (есть, кста, такой стиль танца - весело выглядит).
Pushing каталога добавляет его в начало списка (вершину стека) и переходит в него:
$ pushd /etc/apache2
/etc/apache2 /var/www/html
Для того, чтобы только добавить каталог в стек и не переходить на него, нужно использовать флаг "-n".
Popping удаляет верхний каталог из стека и возвращает нас на следующий за ним:
$ popd
/var/www/html
Если хотим полностью очистить стек, тогда либо выполняем "dirs -c", либо зовем popd до тех пор, пока не увидим:
$ popd
bash: popd: directory stack empty
Принцип работы со стеком заключается в том, что мы добавляем туда каталоги, после чего прыгаем по ним, используя аргументы для pushd и popd, которые рассмотрим далее.
LinuxCamp | #shell
