'cd' alterna para o diretório anterior e atual

1

Descobri que cd - pode alternar entre o diretório anterior e atual, o que é um recurso muito útil. Também encontrou cd -- funciona também, mas não sabe exatamente para que serve isso. Existe alguma referência abrange isso? Por favor, informe, obrigado.

    
por Stan 09.11.2010 / 01:30

3 respostas

4

Editar:

Não estou claro se você está falando sobre cd -- ou cd -- - . Então, vou tentar responder as duas perguntas.

cd -- (sem diretório) agirá da mesma forma que cd (sem diretório). Você retornará ao seu diretório pessoal. cd -- não voltará para o diretório de trabalho anterior.

stefanl@host:~ $ cd tmp
stefanl@host:~/tmp $ cd --
stefanl@host:~ $ cd --
# Note that I do not go back to the directory ~/tmp
stefanl@host:~ $

Veja como esse comportamento é diferente de cd - . Isso também é verdade para cd -- - :

stefanl@host:~ $ cd tmp
stefanl@host:~/tmp $ cd -
/Users/stefanl
stefanl@host:~ $ cd -
/Users/stefanl/tmp

# 'cd -- -' behaves the same as 'cd -'
stefanl@host:~/tmp $ cd -- -
/Users/stefanl
stefanl@@host:~ $ cd -- -
/Users/stefanl/tmp
stefanl@host:~/tmp $

Em relação a -- para a maioria dos comandos Unix:

O -- dirá cd para ignorar quaisquer opções após cd -- . Do Página do Bash Man :

Unless otherwise noted, each builtin command documented as accepting options preceded by ‘-’ accepts ‘--’ to signify the end of the options.

Finja que você tinha um diretório chamado -h (observe que também preciso usar -- aqui):

$ ls -ld -- -h
drwxr-xr-x  2 stefanl  stefanl  68 Nov  8 16:41 -h

Você não pode fazer o cd para isso normalmente, porque o comando tenta interpretar a -h como uma opção:

$ cd -h
-bash: cd: -h: invalid option
cd: usage: cd [-L|-P] [dir]

Portanto, use o -- para informar ao cd para não processar mais opções após o -- :

stefanl@host:~ $ cd -- -h
stefanl@host:~/-h $ pwd
/Users/stefanl/-h
stefanl@host:~/-h $
    
por 09.11.2010 / 01:42
3

O diretório anterior também é cd ~-

Depende do seu shell, mas confira o dirs builtin (o meu é zsh neste caso):

[iluvatar]-[/srv/django]-[1126] % dirs -v
0       /srv/django
1       /srv/django/app
2       /srv/django/app2
3       ~

Em seguida, você pode usar o atalho cd ~N para alterar os diretórios, bem como pushd e popd para alterar a pilha.

    
por 09.11.2010 / 02:25
1

Eu não sei a resposta para isso com certeza, mas pelo que eu deduzi parece que o -- está sendo interpretado como o precursor de um argumento. Como nenhum argumento é passado, ele está sendo ignorado e, portanto, o padrão é cd , o que leva você ao seu diretório inicial.

Parece que existem alguns utilitários padrão:% [james@aladdin blah]$ pwd
/home/james/blah
[james@aladdin blah]$ touch hello
[james@aladdin blah]$ ls -
ls: cannot access -: No such file or directory
[james@aladdin blah]$ ls --
hello
[james@aladdin blah]$ rm -
rm: cannot remove '-': No such file or directory
[james@aladdin blah]$ rm --
rm: missing operand
Try 'rm --help' for more information.

    
por 09.11.2010 / 01:44

Tags