
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 cd
levasse 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 paracd
menciona:
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 pushd
and 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 popd
trê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-R
e digitando algumas letras do cd
comando digitado anteriormente. Pressionar CTRL-R
repetidamente trará correspondências mais antigas.
Este método será mais útil se você tiver mais de dois caminhos para alterar.