Retornar ao local do diretório antes do cd-ing para o diretório home

4

Como é bem sabido, cd sem um argumento altera o diretório atual para o seu diretório home. Eu estou querendo saber se há alguma maneira, depois de usar o comando cd como este, para retornar ao local de diretório que estava em um antes de executar cd ?

Generalizando, existe alguma maneira de retornar a um diretório anterior depois que um deles tenha cd -ed para outro diretório? Parece muito possível que a resposta a essas duas perguntas seja a mesma, mas caso não seja, eu as mantenho separadas, porque a primeira pergunta é a principal que gostaria de responder.

    
por Joshua 03.06.2014 / 21:56

3 respostas

7

Sim:

cd -

ou

cd "$OLDPWD"

(Você pode omitir as aspas se o nome do diretório não contiver espaços em branco ou caracteres curinga).

Eles funcionam em todos os shells ao estilo POSIX (bash, ksh, zsh,…). cd - também funciona em tcsh e fish.

    
por 03.06.2014 / 22:00
4

Frequentemente, uso pushd e popd para evitar esse problema.

Exemplo

$ pwd
/home/saml/tst/134317

$ ls -l
total 12
drwxrwxr-x. 2 saml saml 4096 Jun  3 16:05 dir1
drwxrwxr-x. 2 saml saml 4096 Jun  3 16:05 dir2
drwxrwxr-x. 2 saml saml 4096 Jun  3 16:05 dir3

Agora vamos para dir1 .

$ pushd dir1
~/tst/134317/dir1 ~/tst/134317

$ pwd
/home/saml/tst/134317/dir1

E para dir2 :

$ pushd ../dir2/
~/tst/134317/dir2 ~/tst/134317/dir1 ~/tst/134317

$ pwd
/home/saml/tst/134317/dir2

Agora de volta para onde nós viemos:

$ popd
~/tst/134317/dir1 ~/tst/134317

$ pwd
/home/saml/tst/134317/dir1

Você pode ver quais diretórios estão na sua pilha com o comando dirs :

$ dirs
~/tst/134317/dir1 ~/tst/134317

O diretório em que você está atualmente é o diretório mais à esquerda.

~/tst/134317/dir1

O diretório para o qual vamos "pop" é o diretório ao lado, à direita.

~/tst/134317

Ele continua a "empurrar" diretórios no lado esquerdo enquanto você os adiciona, e "aparece" no lado esquerdo também.

    
por 03.06.2014 / 22:12
2

Com o bash, uma alternativa para "cd -" pode ser o pushd / popd, ele permite trabalhar com uma pilha de diretórios:

cd <path1> => move to <path1>
pushd <path2> => move to <path2>
pushd <path3> => move to <path3>
...
popd => return to <path2>
popd => return to <path1>
    
por 03.06.2014 / 22:14