O que o cd - (cd hífen) faz?

14

Digitei o cd -terminal por engano hoje e recebi um erro dizendo:

bash: cd: OLDPWD not set

E, infelizmente, man cdnão existe.

No manual entry for cd

O que isso realmente faz?

Dan
fonte
3
cdé um Bash embutido. Portanto, é documentado em man bash-builtinsvez de sua própria página. Isso vale para todos os outros Bash builtins. Você pode dizer que está embutido por causa da bash: frente da mensagem de erro.
kiri

Respostas:

17

cd - alterna entre os diretórios de trabalho atuais antigos e novos.

Avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ cd -
bash: cd: OLDPWD não definido
Avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ cd ~ / Desktop
Avinash @ avinash-Lenovo-IdeaPad-Z500: ~ / Desktop $ pwd
/ home / avinash / Desktop
Avinash @ avinash-Lenovo-IdeaPad-Z500: ~ / Desktop $ cd -
/ home / avinash
Avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ 

Veja também,

avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ echo $ OLDPWD

Avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ cd ~ / Desktop
Avinash @ avinash-Lenovo-IdeaPad-Z500: ~ / Desktop $ echo $ OLDPWD
/ home / avinash
Avinash @ avinash-Lenovo-IdeaPad-Z500: ~ / Desktop $ cd d
Avinash @ avinash-Lenovo-IdeaPad-Z500: ~ / Desktop / d $ echo $ OLDPWD
/ home / avinash / Desktop
Avinash @ avinash-Lenovo-IdeaPad-Z500: ~ / Desktop / d $ 

A $OLDPWDvariável armazena o caminho do diretório de trabalho atual anterior.

Avinash Raj
fonte
8

A resposta de Avinash Raj está completamente correta, mas quanto à entrada manual, você pode obter as páginas de manual do POSIX e, em seguida man cd, funcionará:

sudo apt-get install manpages-posix
man cd

A parte que diz tudo isso é a seção OPERANDS:

-      When a hyphen is used as the operand, this shall be equivalent to the command:

       cd "$OLDPWD" && pwd

which changes to the previous working directory and then writes its name.
Oli
fonte