Команда «ой, я забыл pushd»



Предыдущие посты по стеку каталогов: тут и тут.



Предположим, вы перемещаетесь между несколькими директориями с помощью pushd, а потом случайно запускаете cd и теряете первый элемент стека:





$ dirs

~/Web/src /var/www/html /etc/apache2



$ cd /etc/ssl/certs



$ dirs

/etc/ssl/certs /var/www/html /etc/apache2





Команда cd заменила каталог "~/Web/src" на "/etc/ssl/certs". Не волнуйтесь, чтобы все это дело пофиксить, нужно запустить pushd с дефисом:





$ pushd -

~/Web/src /etc/ssl/certs /var/www/html /etc/apache2





Команда работает практически аналогично "cd -": добавляет прошлый активный каталог в стек и переходит на него. Теперь к нам вернется потерянный каталог и сохранится тот, в который мы перешли через cd.



Если мы через cd куда-то перешли, осознали проблему, но менять каталог не хотим, используем pushd дважды. Для удобства еще и alias определим:





$ pushd -

~/Web/src /etc/ssl/certs



$ pushd

/etc/ssl/certs ~/Web/src





alias slurp='pushd - && pushd'





Такой прием, конечно, не поможет, если мы несколько раз через cd походили по разным местам. Тут нужно вовремя раздуплиться, иначе придется вводить полный путь.



LinuxCamp | #shell