Quand est-il utile d'utiliser «grep - SOMEPATTERN»?

8

Sous Linux / AIX où que ce soit, quand est-il utile d'utiliser --, comme dans cette commande:

grep -- SOMEPATTERN
gasko peter
la source

Réponses:

18

Quand "SOMEPATTERN" démarre ou peut démarrer (par exemple s'il s'agit d'une variable comme celle "$PATTERN"dont vous n'avez pas le contrôle total) avec un caractère -(tiret).

Aussi avec GNU grep (à moins qu'il ne $POSIXLY_CORRECTsoit activé), c'est utile si d'autres arguments (noms de fichiers) peuvent commencer par -.

Alternativement, vous pouvez faire

grep -e -SOMEPATTERN- -- file1 file2 -xxx-

--marque la fin des options. C'est utile partout où les arguments sans option peuvent commencer par a dash, et cela ne nuit pas, c'est donc une bonne habitude de l'utiliser.

Stéphane Chazelas
la source
8

Lorsque le motif commence par un tiret, sinon grep pensera que c'est une option. Dites, vous recherchez "-a" dans un texte:

grep -a file.txt

grep essaiera alors de trouver le modèle "file.txt" dans l'entrée standard, en utilisant l'option -a. Par conséquent, vous devez faire

grep -- -a file.txt
janvier
la source
3
Cela ne vaut pas seulement pour grep.
Bernhard