Questão Como posso mudar para o diretório anterior em vez de subir?
Atualmente, passo muitas das minhas horas de trabalho indo e voltando entre dois caminhos que estão muito abaixo da árvore e desviam um do outro na raiz. Parece-me que minha vida seria muito mais fácil se houvesse um argumento para cd
que leva o usuário ao último diretório em que estavam.
Isto é, se eu estiver em:
/etc/foo/bar/baz/moo
e depois digite:
cd /var/lib/fubarred_app/blargh/logs
Eu gostaria de poder voltar ao primeiro diretório sem ter que digitar o caminho inteiro novamente.
A chave de memória não a corta, uma vez que eu uso comandos suficientes em cada lugar que é tão difícil de voltar e encontrar o caminho que quero, como é para eu mesmo digitar.
Existe um comando curto que me deixaria ir para o diretório anterior?
209
2017-08-17 20:18
origem
Respostas:
O comando
cd -
vai realizar a troca que você precisa na maioria dos shells convencionais, a variante mais antiga é
cd "$OLDPWD"
que usará a variável de ambiente que contém o diretório de trabalho anterior.
o Página man do POSIX para cd
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).
OPERANDES
-Quando um hífen é usado como o operando, isso deve ser equivalente ao comando:
cd "$OLDPWD" && pwd
que muda para o diretório de trabalho anterior e grava seu nome.
292
2017-08-17 20:23
Além da resposta de bryan, vale a pena mencionar que há também pushd
e popd
, que cria diretórios como uma pilha. Isso também está disponível no Windows NT; no entanto, não está disponível em todos os shells.
Por exemplo, podemos ir a 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ê ligar popd
três vezes seguidas, você chega a 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 o Zsh; tem uma opção AUTO_PUSHD, que irá empurrar automaticamente cd
está na pilha.
105
2017-08-17 20:35
Existem alguns programas "jump"
- autojump (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ê o usa dando 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 você deseja para 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
13
2017-08-17 23:52
Além de
cd -
e cd $OLDPWD
Você pode usar a pesquisa de histórico pressionando CTRL-R
e digitando algumas letras do cd
comando que você digitou antes. Pressionando CTRL-R
repetidamente trará partidas mais antigas.
Esse método será mais útil se você tiver mais de dois caminhos para alterar.
10
2017-08-18 09:44
Você pode usar isso para criar facilmente aliases para diretórios:
a() { alias $1=cd\ $PWD; }
a 1
e depois:
1
9
2017-08-18 01:50
bashmarks permite marcar uma série de pastas e alternar entre elas com a conclusão da tabulação:
Para marcar uma pasta, basta ir para essa pasta e, em seguida, marcá-lo da seguinte forma:
bookmark foo
O marcador será nomeado "foo". Quando você quiser voltar para essa pasta, use:
go foo
Para ver uma lista dos marcadores:
bookmarksshow
Trabalhos de conclusão de tabulação, para ir ao marcador de shoobie, simplesmente:
go sho[tab]
6
2017-08-18 08:54
Outra possibilidade seria manter apenas duas janelas abertas, com uma posicionada em cada diretório.
4
2017-08-18 03:00
Eu sei que isso não é estritamente uma resposta à sua pergunta, mas é útil para alcançar o objetivo de levando-o aos seus diretórios importantes.
em qualquer descida UNIX-bash você pode usar CDPATH para estender a pasta em que o comando cd procura.
do meu arquivo .bashrc:
export CDPATH='.:~/source/'
CD primeiro buscas em sua pasta atual e, em seguida, pesquisa em meu diretório de projeto de codificação.
cd myproject
.. me leva para ~ / sources / myproject de onde eu estou atualmente de pé.
Pequeno recurso simples que ajudou bastante a minha navegação por diretório.
4
2017-08-19 11:11