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.

Respostas:


284

Você pode usar

cd -

ou você poderia usar

cd $OLDPWD

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.


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.


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.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.