Como ir para o diretório de trabalho anterior no terminal?

213

No terminal, como posso definir uma chave para ir para o diretório anterior em que eu estava ao mudar de diretório com o cdcomando?

Por exemplo, eu estou em /opt/soft/bine eu cdem /etc/squid3e eu quero voltar para o primeiro diretório.

Hojat Taheri
fonte

Respostas:

284

Você pode usar

cd -

ou você poderia usar

cd $OLDPWD
Raphael Ahrens
fonte
3
Alguma idéia de por que o nome do diretório é impresso no console ao usar "cd -"?
precisa saber é o seguinte
4
Provavelmente, como os shells antigos não exibiam o nome do diretório atual no prompt, foi útil ver o nome do diretório quando você digitou cd -. Por exemplo, quando você digita, cd /usr/localsabe que está /usr/loal, mas quando digita cd -nem sempre se lembra de qual diretório veio. Por isso, evita que você digite cd -; pwd. Mas isso é tudo especulação.
Raphael Ahrens
2
Ou você pode usar o alias: configure o alias alias -- -='cd -'e use -(1 caractere) em vez de cd -(4 caracteres). Mais rápido:D
ADTC
2
Como eu poderia viver sem isso?
VSZM
1
@ AndréKuhlmann Você pode fazer cd -duas vezes. Você cd /; cd /usr; cd -; cd -deve estar em /usr. Mas talvez eu não tenha entendido sua pergunta.
Raphael Ahrens
54

As outras respostas são definitivamente completas no sentido de resposta direta. cd -e cd $OLDPWDsão definitivamente as principais opções para isso. No entanto, muitas vezes acho que entrar em um fluxo de trabalho pushde popdfuncionar melhor.

Para encurtar a história, se você estiver mudando para um diretório com a intenção final de voltar para onde começou, use pushd/ popd.

Exemplo estendido

A principal diferença é facilmente mostrada por um exemplo.

$ cd dir1
$ pushd dir2

Neste ponto, você tem uma pilha de diretórios que é dir2, dir1. A execução pushdsem argumentos o colocará de volta na dir1pilha agora como dir1, dir2. popdfaria o mesmo, mas deixaria uma pilha de diretórios vazia. Isso não é muito diferente de como você seria no cd -fluxo de trabalho.

No entanto, agora você pode alterar os diretórios várias vezes e voltar ao dir1. Por exemplo,

$ cd dir1
$ pushd dir2
$ cd dir3

Se você executar popdnesse ponto, retornará para dir1.

Josh Berry
fonte
2
Você também pode empilhar diretórios, para usar pushde voltar repetidamente para a pasta anterior enquanto estiver popdpressionando -ing.
Bernhard
1
Certamente. Eu quase coloquei um grande exemplo que incluía checar a pilha dirs -v, mas a realidade para mim é que geralmente o caso simples é tudo o que realmente uso. (Ou, pior, cometo um erro ao tentar push +2ou algo parecido) Além disso, pensei em passos pequenos para convencer alguém a experimentar o fluxo de trabalho. :)
Josh Berry
Como você cdchega ao topo da pilha sem aparecer?
Jon Deaton
18

Você deveria usar:

cd ~-

faz o mesmo que cd -(da resposta atualmente aceita) sem o eco irritante do diretório e é mais fácil digitar que cd "$OLDPWD"ou cd - > /dev/null.

Anthon
fonte
2
Redirecionando o eco para arquivo nulo! É genial !!
Ram
2
O eco mostra o novo diretório, não o anterior. E eu acho isso útil, para que eu saiba onde estou agora, principalmente se estiver em um shell que mostre apenas o nome do diretório atual (ou nada) no prompt, e não me incomode em alterar o prompt para mostrar o caminho completo. Obviamente, se o seu prompt já mostrar o caminho completo, o eco seria redundante e irritante. Nesse caso, acho que você pode tentar alias -- -='cd "$OLDPWD"'usar -(1 caractere) em vez de cd ~-(5 caracteres). :)
ADTC 16/02
Fonte e explicação: unix.stackexchange.com/a/330885/38213 Spoilers, - é um operando e ~ são aliases de caminho. Então, cd ~-/..funciona, mas cd -/..não!
Ray Foss
16
$ cd - 

mudará para o diretório de trabalho anterior.

mezi
fonte
3

Você pode "definir uma chave" para 'cd -' editando o arquivo '~ / .bashrc' e incluindo um alias para o comando. Por exemplo, você pode adicionar 'cdc' para torná-lo 'cd -', o que forneceria uma maneira mais curta de chegar ao último diretório adicionando:

alias cdc='cd -'

Dessa forma, você simplesmente digitaria 'cdc' e o colocaria em seu último diretório de trabalho.

Atari911
fonte
5
E confunda você sem fim quando você usa um sistema em que esse apelido não está no lugar. Ele economiza digitando um caractere de vez em quando. Por que se incomodar?
um CVn 01/07/2013
2
"No terminal, como posso definir uma chave para ir para o diretório anterior" Eu nunca fico confuso. É apenas um atalho, quando você estiver em outro sistema, use o caminho mais longo.
Atari911
@ Atari911 ótima pergunta! aqui está a resposta: stackoverflow.com/questions/4200800 Aqui está o que eu fiz (vinculado F12): bind '"\e[24~":"\C-k \C-ucd -\n"'(ou, de preferência, mova-o para o inputrcarquivo conforme mencionado na resposta).
ADTC
1

cd ..vai para a pasta precedente na árvore da pasta.
cd -vai para a pasta em que estava antes. Este comando não funcionou em algumas distros (ubuntu 16.04), funciona no debian 9.

Escorpião
fonte