Comment échapper «-» dans bash [duplicate]

14

Duplicate possible:
outils Unix: que faire si un fichier est nommé sans quelque chose?

Veuillez me dire comment y échapper:

[root @ unix ~] # ./-sh
-bash: ./-sh: autorisation refusée
[root @ unix ~] # chmod + x -sh
chmod: mode invalide: `-sh '
Essayez `chmod --help 'pour plus d'informations.
[root @ unix ~] #
soundhax
la source
# chmod a + x "\\ - sh" chmod: impossible d'accéder à `\\ - sh ': Aucun fichier ou répertoire de ce type
soundhax

Réponses:

24

Utilisez --.

Par exemple chmod +x -- -sh. En langage GNU, la --fin des options signifie, -shn'est donc plus analysée comme une option.

[Modifier] Exemple ajouté:

coléoptère: / home / hennes / test> touch - -sh

coléoptère: / home / hennes / test> ls -l - -sh
-rw ------- 1 utilisateurs de hennes 0 2013-01-04 17:20 -sh

coléoptère: / home / hennes / test> chmod + x - -sh

coléoptère: / home / hennes / test> ls -l - -sh
-rwx ------ 1 utilisateurs de hennes 0 2013-01-04 17:20 -sh
Hennes
la source
Fait intéressant, cela ne semble pas fonctionner avec l'écho GNU, bien qu'il fonctionne avec printf GNU. Cela fonctionne: printf -- -sh. Et cela ne fait pas: echo -n -- -sh.
Lukas Pokorny