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

11

Eu digitei cd - no terminal por engano hoje e recebi um erro dizendo:

bash: cd: OLDPWD not set

E, infelizmente, man cd não existe.

No manual entry for cd

O que isso realmente faz?

    
por Dan 22.01.2014 / 12:14

2 respostas

11

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

avinash@avinash-Lenovo-IdeaPad-Z500:~$ cd -
bash: cd: OLDPWD not set
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 variável $OLDPWD armazena o caminho do diretório de trabalho presente anterior.

    
por Avinash Raj 22.01.2014 / 12:17
7

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

O bit que conta 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.
    
por Oli 22.01.2014 / 12:56