El guión es un carácter especial en Bash como se ha señalado en http://tldp.org/LDP/abs/html/special-chars.html#DASHREF. Así que escapar de esta vez solo te permite superar a Bash, pero Grep todavía tiene su propio significado para los guiones (proporcionando opciones).
Así que realmente necesita escapar dos veces (si prefiere no usar las otras respuestas mencionadas). Lo siguiente/debería funcionar
grep \\-X
grep '\-X'
grep "\-X"
Una manera de probar cómo Bash pasa argumentos a un script/programa es crear un script .sh que sólo ecos todos los argumentos. Yo uso un script llamado echo-args.sh para jugar de vez en cuando, todo lo que contiene es:
echo $*
invoco como:
bash echo-args.sh \-X
bash echo-args.sh \\-X
bash echo-args.sh "\-X"
Usted consigue la idea.
' - -' es un truco útil para una serie de utilidades Unix. – Johnsyweb
Funciona con 'ack' – dukedave
para aquellos de nosotros preguntándonos en esta etapa qué significa' --' o lo hace: http://unix.stackexchange.com/questions/11376/what-does-double-dash-mean –