
Я часто использую cd -
, чтобы вернуться туда, где я был. Как я могу сделать это несколько раз в bash? Или zsh или какой-то другой инструмент будет поддерживать это?
решение1
В zsh есть auto_pushd
опция. Эта опция заставляет cd
вести себя как pushd
. Тогда вы можете просто использовать popd
, чтобы вернуться в предыдущие каталоги.
~ $ setopt auto_pushd
~ $ cd /
/ $ cd /var
/var $ cd /usr
/usr $ dirs
/usr /var / ~
/usr $ popd
/var $ popd
/ $ popd
~ $
В Bash вы можете создать псевдоним cd
для pushd
.
alias cd=pushd
Единственный недостаток этого в том, что вы потеряете cd
три флага. Из cd
записи справки:
-L принудительно следовать символическим ссылкам
-P использовать физическую структуру каталогов без следования символическим ссылкам
-e если указана опция -P и текущий рабочий каталог не может быть успешно определен, выйти с ненулевым статусом
Если вам когда-нибудь придется использовать настоящую cd
встроенную функцию вместо псевдонима, вы можете воспользоваться одним из следующих способов:
'cd'
- Заключение команды в кавычки приводит к тому, что оболочка не разрешает псевдоним и использует обычный cd.\cd
- Обратные косые черты закавычивают символы. Если вы заключаете в кавычки один символ слова, оболочка рассматривает все слово как закавыченное.builtin cd
- Это напрямую указывает оболочке использовать встроенную функцию вместо псевдонима.
решение2
Вот быстрый и простой способ удобно добавлять каталоги в закладки и возвращаться к ним:
$ a() { alias $1="cd $PWD"; }
Зайдите куда-нибудь и наберите:
$ a 1
Теперь у вас есть команда, 1
которая делает cd
каталог, который является текущим в данный момент. Позже просто введите:
$ 1
И вуаля, обратно в этот каталог. Я нахожу это очень полезным.
решение3
Баш
Я нашел сценарий, доступныйздесь, это решило эту проблему для меня. С этим вы можете ввести, cd --
чтобы увидеть последние 10 каталогов, которые вы использовали. Это будет выглядеть примерно так:
0 ~/Documents/onedir
1 ~/Music/anotherdir
2 ~/Music/thirddir
3 ~/etc/etc
Чтобы перейти ~/Music/thirddir
просто введитеcd -2
зш
oh-my-zsh предоставляет для этого действительно хорошую функциональность (по крайней мере, я думаю, что это делает oh-my-zsh).
В основном, d
это псевдонимdirs -v | head -10
dirs
— это встроенная команда zsh, которая показывает последние посещенные вами каталоги.
Кроме того, 1
имеет псевдоним cd -1
и так далее для всех чисел до 9
.
На практике это работает так:
$ pwd
/home/me/Documents/gems/java_regex/lib
$ d
0 ~/Documents/gems/java_regex/lib
1 ~/Documents/gems/java_regex
2 ~/Documents/gems
3 ~/Documents
4 ~
$ 2
~/Documents/gems
$ pwd
/home/me/Documents/gems
решение4
Да. Мы можем сделать вашу cd
команду более мощной. Профиль Bash позволяет нам настраивать ее так, как мы хотим.
Вместо того, чтобы делать несколько cd
для навигации по каталогу, мы можем использоватьпсевдоним
Например :
alias ..5="cd ../../../../.."
Это перенесет вас на 5 уровней вверх.