cd -
cd -
o levará ao diretório usado anteriormente (se houver um) ou gerará um erro.
Se um diretório usado anteriormente existir, ele será alterado lá, atualizando o valor do diretório de trabalho atual e do anterior, retornando um status de saída bem-sucedido ( 0
).
Caso contrário, ele imprimirá uma mensagem de erro e retornará um status de saída ( 1
).
Faça sua própria verificação com cd -; echo $?
.
O status de saída se tornará importante quando você for usá-lo em um script .
Um status de saída diferente de 0 pode parar a execução de um script inteiro (se houver um set -e
) ou, pior, pode levar a um ponto de saída do comando cd -
, diferente do que você estava pensando quando escreveu o script e para executar comandos no diretório errado: imagine que você comece em dir0; depois que você mudar para dir1, você não conseguirá mudar para dir2. Agora você executa um cd -
. Você pensa estar em dir1 mas em vez disso você está em dir0 ... e daqui tudo nas mãos do Destino.
cd $OLDPWD
(ou cd $owd
)
cd
é um comando interno de todos os shells (todos, a partir de sh
).
Em dash
e bash
, a variável PWD
, OLDPWD
será definida para o diretório de trabalho atual e antigo. Em csh
e tcsh
, será definido cwd
e owd
.
Portanto, com o comando cd $OLDPWD
em bash ou cd $owd
em tcsh , você será levado ao diretório de trabalho antigo, se existir, ou ao seu diretório home se esta variável não estiver definida.
O código de saída será sempre 0
, se você tiver acesso ao seu diretório inicial (1) .
pushd newdir ... popd
pushd
adiciona um diretório à pilha e popd
remove um da pilha. Uma vantagem a respeito de cd -
é que você escolherá quando para voltar ao diretório assinado, e você não será forçado a voltar para o último. Outra vantagem é que você pode empilhar vários diretórios e decidir a qual saltar. help pushd
e help popd
para as informações sobre os comandos embutidos .
Notas:
-
Para escrever
cd $NotAlreadySetVariable
é o equivalente a escrevercd
sem nenhum parâmetro que o leve ao seu diretório inicial . Para ser mais preciso, você será direcionado para o diretório dentro de$HOME
(para bash, dash ...) ou$home
(para csh, tcsh ...). Se este diretório não existir ou não estiver acessível, você receberá um erro. Se$HOME
(ou$home
) estiver vazio, você permanecerá no diretório atual, nenhum erro será gerado e o valor$OLDPWD
(ou$owd
) será definido no diretório atual. -
A variável
$OLDPWD
,$owd
pode ser útil quando você quiser usar o diretório anterior como parâmetro para um comando. Por exemplo. Você deseja mover todos os arquivos do diretório atual para o antigo:mv * $OLDPWD
.
Trivial
A ser observado a partir de man bash
que na definição de PWD é usado o diretório de trabalho atual (cwd) e não algo como o diretório de trabalho atual (PWD) ...
PWD The logical value of the current working directory.
This is set by the cd command.
OLDPWD The previous logical value of the current working directory.
This is set by the cd command.
HOME The home directory of the current user; the default argument for
the cd builtin command. The value of this variable is also used when
performing tilde expansion.
de man tcsh
cd and pushd interpret '-' as the old working directory (equivalent to the shell variable owd). This is not a substitution at all, but an abbreviation recognized by only those commands. Nonetheless, it too can be prevented by quoting.