Como gravar em um diretório com este nome “-2” (começando com o hífen)?

152

Eu tenho um diretório chamado:

-2

Eu quero fazer o cd, mas o cd reclama:

bash: cd: -2: invalid option

Sem sucesso, tentei:

cd "-2"
cd '-2'
cd \-2

Alguma solução?

Editar: nenhum navegador de arquivos como o mc, etc. está disponível no servidor.

    
por user151851 03.01.2013 / 21:29

6 respostas

252

Pelo menos duas maneiras:

  1. Use o argumento -- .

    cd -- -2
    

    Isso usa uma convenção comum às ferramentas GNU, que é não tratar nada que apareça após -- como uma opção de linha de comando.

    Como um comentador observou, essa convenção também é definido no padrão POSIX :

    Default Behavior: When this section is listed as "None.", it means that the implementation need not support any options. Standard utilities that do not accept options, but that do accept operands, shall recognize "--" as a first argument to be discarded.

    The requirement for recognizing "--" is because conforming applications need a way to shield their operands from any arbitrary options that the implementation may provide as an extension. For example, if the standard utility foo is listed as taking no options, and the application needed to give it a pathname with a leading hyphen, it could safely do it as:

    foo -- -myfile
    

    and avoid any problems with -m used as an extension.

    bem como :

    Guideline 10:
    The argument -- should be accepted as a delimiter indicating the end of options. Any following arguments should be treated as operands, even if they begin with the '-' character. The -- argument should not be used as an option or as an operand.

  2. Especifique o caminho explicitamente:

    cd ./-2
    

    Isso especifica o caminho explicitamente nomeando o diretório atual ( . ) como ponto de partida.

    cd $(pwd)/-2
    cd /absolute/path/to/-2
    

    Estas são variações do acima. Qualquer número de tais variações pode ser possível; Vou deixar como um exercício para o leitor descobrir todos eles.

por 03.01.2013 / 21:32
48

Isso deve funcionar:

cd -- -2 

- significa que não há mais opção

    
por 03.01.2013 / 21:33
25

Isso funcionará se '-2' estiver no diretório atual.

    cd ./-2

Você pode autocompletar digitando - e pressionando a tecla.

    
por 04.01.2013 / 07:19
10

cd /home/.../-2 também funciona. Dê o caminho completo para acessar.

    
por 04.01.2013 / 03:46
6

Apenas para complementar, se você quiser remover / excluir este diretório, use o seguinte comando:

rm -r -- -2
    
por 04.01.2013 / 15:14
-1

Eu sei que esta pergunta já foi respondida. Se alguém tiver uma situação como a minha, isso é para eles:

Eu executei um aplicativo java e estava procurando por um diretório que começasse com <path> , eu deveria substituí-lo pelo caminho correto antes de executar o aplicativo. No entanto, eu esqueci de fazer isso. O aplicativo criou um diretório chamado <path> .

Eu tentei cd <path> - me deu erro "-bash: erro de sintaxe próximo a nova linha de token inesperado" Com base na sugestão aqui (eu entendo que é para o diretório começando com - e não <) eu tentei cd -- <path> . No entanto, recebi o mesmo erro.

Quando eu tentei cd \<path>\ - isso funcionou!

Informação de fundo:

Os símbolos "<" e ">" são usados para redirecionar STDIN e STDOUT, portanto, eles precisam ser escapados para fazer com que o shell não os interprete como redirecionamentos.

    
por 05.07.2017 / 16:00