Il trattino è un carattere speciale in Bash come notato in http://tldp.org/LDP/abs/html/special-chars.html#DASHREF. Quindi sfuggire a questa situazione ti fa passare Bash, ma Grep ha ancora il suo significato di trattini (fornendo opzioni).
Quindi hai davvero bisogno di scappare due volte (se preferisci non usare le altre risposte citate). Quanto segue/dovrebbe funzionare
grep \\-X
grep '\-X'
grep "\-X"
Un modo per provare come Bash passa gli argomenti ad uno script/programma è quello di creare uno script sh che solo Echos tutti gli argomenti. Io uso uno script chiamato echo-args.sh con cui giocare di volta in volta, tutto ciò che contiene è:
echo $*
invoco come:
bash echo-args.sh \-X
bash echo-args.sh \\-X
bash echo-args.sh "\-X"
Si ottiene l'idea.
fonte
2012-05-15 23:38:42
'- -' è un trucco pratico per un numero di utility Unix. – Johnsyweb
Funziona con 'ack' – dukedave
per quelli di noi che stanno chiedendo in questa fase cosa' --' significa o fa: http://unix.stackexchange.com/questions/11376/what-does-double-dash-mean –