Como escapar de "-" no bash [duplicado]

14

Possível duplicata:
Ferramentas Unix: e se um arquivo for nomeado menos algo?

Por favor, diga-me como escapar disso:

[root @ unix ~] # ./-sh
-bash: ./-sh: permissão negada
[root @ unix ~] # chmod + x -sh
chmod: modo inválido: `-sh '
Tente `chmod --help 'para mais informações.
[root @ unix ~] #
soundhax
fonte
# Chmod a + x "\\ - sh" chmod: não pode acessar `\\ - sh ': Nenhum tal lima ou diretório
soundhax

Respostas:

24

Use --.

Por exemplo chmod +x -- -sh. Na linguagem GNU, o --fim das opções significa que -shnão é mais analisado como uma opção.

[Editar] Exemplo adicionado:

besouro: / home / hennes / test> touch - -sh

besouro: / home / hennes / test> ls -l - -sh
-rw ------- 1 usuários de hennes 0 2013-01-04 17:20 -sh

besouro: / home / hennes / test> chmod + x - -sh

besouro: / home / hennes / test> ls -l - -sh
-rwx ------ 1 usuários de hennes 0 2013-01-04 17:20 -sh
Hennes
fonte
Curiosamente, isso não parece funcionar com o GNU echo, embora funcione com o GNU printf. Isso funciona: printf -- -sh. E isso não faz: echo -n -- -sh.
Lukas Pokorny