Como posso mudar para o diretório anterior em vez de subir?

Como posso mudar para o diretório anterior em vez de subir?

Atualmente passo grande parte das minhas horas de trabalho indo e voltando entre dois caminhos que estão muito abaixo da árvore e se desviam um do outro na raiz. Ocorre-me que minha vida seria muito mais fácil se houvesse um argumento que cdlevasse o usuário ao último diretório em que esteve.

Isto é, se eu estiver em:

/etc/foo/bar/baz/moo

e digite:

cd /var/lib/fubarred_app/blargh/logs

Gostaria de poder voltar ao primeiro diretório sem precisar digitar todo o caminho novamente.

A chave de memória não funciona, pois eu uso comandos suficientes em cada lugar para que seja tão difícil voltar e encontrar o caminho que desejo quanto digitá-lo sozinho.

Existe um comando curto que me permite ir para o diretório anterior?

Responder1

O comando

cd -

irá realizar a troca necessária na maioria dos shells convencionais, a variante mais antiga e mais longa é

cd "$OLDPWD"

que usará a variável de ambiente que contém o diretório de trabalho anterior.


OPágina de manual POSIX paracdmenciona:

DESCRIÇÃO

Se, durante a execução das etapas acima, a variável de ambiente PWD for alterada, a variável de ambiente OLDPWD também deverá ser alterada para o valor do diretório de trabalho antigo (que é o diretório de trabalho atual imediatamente antes da chamada para cd).

OPERANOS

  -  Quando um hífen for usado como operando, será equivalente ao comando:

cd "$OLDPWD" && pwd 

que muda para o diretório de trabalho anterior e então escreve seu nome.

Responder2

Além da resposta de bryan, vale a pena mencionar que também existe pushdand popd, que cria diretórios como uma pilha. Isto também está disponível no Windows NT; no entanto, não está disponível em todos os shells.

Por exemplo, podemos ir para três diretórios diferentes e você sempre verá sua pilha quando ligar pushd:

charon:~ werner$ pushd Documents/
~/Documents ~

charon:Documents werner$ pushd ../Movies/
~/Movies ~/Documents ~

charon:Movies werner$ pushd ../Downloads/
~/Downloads ~/Movies ~/Documents ~

E quando você chama popdtrês vezes seguidas, você acessa esses diretórios na pilha na ordem inversa. Ao mesmo tempo, a pilha será esvaziada novamente.

charon:Downloads werner$ popd
~/Movies ~/Documents ~

charon:Movies werner$ popd
~/Documents ~

charon:Documents werner$ popd
~

charon:~ werner$ popd
-bash: popd: directory stack empty

Se você estiver usando Zsh; ele tem uma opção AUTO_PUSHD, que irá automaticamente colocar cd's na pilha.

Responder3

Existem alguns programas de "salto"

  • salto automático(mantido com recursos básicos)
  • j2 (aparentemente sem manutenção com alguns recursos avançados)
  • z(versão mantida de "j" com recursos avançados)

Isso facilita qualquer tipo de navegação no diretório. Você usa fornecendo uma parte do caminho e simplesmente funciona.

No seu caso

~$ j baz 
/etc/foo/bar/baz/moo$

~$ j bla 
/var/lib/fubarred_app/blargh/logs$

Você pode atribuir qualquer letra que quiser a esses programas, "j" é tradição :)

j2 e z suportam vários termos de pesquisa,...

~$ j baz src
/home/me/projects/baz/repository/trunk/src$

... e mais opções.

~$ j -l  # list directories by "frecency"(frequency + recency) score
~$ j -r PATTERN # match by rank only, not recency
~$ j -t PATTERN # match by recency only, not rank

Responder4

Além de cd -ecd $OLDPWD

Você pode usar a pesquisa no histórico pressionando CTRL-Re digitando algumas letras do cdcomando digitado anteriormente. Pressionar CTRL-Rrepetidamente trará correspondências mais antigas.

Este método será mais útil se você tiver mais de dois caminhos para alterar.

informação relacionada