Existe uma maneira de fazer o CD back várias vezes no bash?

Existe uma maneira de fazer o CD back várias vezes no bash?

Costumo cd -voltar para onde estava. Como posso fazer isso várias vezes no bash? Ou o zsh ou alguma outra ferramenta suportaria isso?

Responder1

No zsh, há uma auto_pushdopção. Esta opção faz com que cdse comporte como pushd. Então você pode simplesmente usar popdpara voltar aos diretórios anteriores.

~ $ setopt auto_pushd
~ $ cd /
/ $ cd /var
/var $ cd /usr
/usr $ dirs
/usr /var / ~
/usr $ popd
/var $ popd
/ $ popd
~ $

No Bash, você pode criar um alias cdpara pushd.

alias cd=pushd

A única desvantagem disso é que você perderá cdas três bandeiras. Na cdentrada de ajuda:

-L força links simbólicos a serem seguidos
-P usa a estrutura de diretório físico sem seguir links simbólicos
-e se a opção -P for fornecida e o diretório de trabalho atual não puder ser determinado com sucesso, saia com um status diferente de zero

Se você precisar usar o cdbuiltin real em vez do alias, poderá usar um destes:

  • 'cd'- Citar o comando faz com que o shell não resolva o alias e use o cd normal.
  • \cd- Barras invertidas citam caracteres. Se você citar um caractere de uma palavra, o shell tratará a palavra inteira como citada.
  • builtin cd- Isso diz diretamente ao shell para usar o builtin em vez do alias.

Responder2

Esta é uma maneira rápida e suja de marcar diretórios de maneira conveniente e voltar para eles:

$ a() { alias $1="cd $PWD"; }

Vá para algum lugar e digite:

$ a 1

Agora você tem um comando chamado 1que acessa cdo diretório atual no momento. Mais tarde basta digitar:

$ 1

E pronto, de volta a esse diretório. Acho isso muito útil.

Responder3

festa

Encontrei um script, disponívelaqui, que resolveu esse problema para mim. Com isso você pode digitar cd --para ver os últimos 10 diretórios que usou. Será algo assim:

0  ~/Documents/onedir
1  ~/Music/anotherdir
2  ~/Music/thirddir
3  ~/etc/etc

Para ir ~/Music/thirddirbasta digitarcd -2

zsh

oh-my-zsh fornece algumas funcionalidades muito boas para isso (pelo menos acho que é oh-my-zsh que define isso).

Basicamente, dé alias dedirs -v | head -10

dirsé um comando interno do zsh e mostra os últimos diretórios que você visitou.

Além disso, 1tem o alias de cd -1e assim por diante para todos os números até 9.

Na prática, funciona assim:

$ 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

Responder4

Sim. Podemos tornar seu cdcomando mais poderoso. O perfil Bash nos permite personalizá-lo da maneira que quisermos.

Em vez de fazer vários cdpara navegar até o diretório, podemos usarapelido

Por exemplo :

alias ..5="cd ../../../../.."

Isso levará você 5 diretórios acima do nível.

informação relacionada