Есть ли способ сделать cd back несколько раз в bash?

Есть ли способ сделать cd back несколько раз в bash?

Я часто использую 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 уровней вверх.

Связанный контент