Je jouais avec le décor GREP_OPTIONS
et je n'arrivais pas à le faire fonctionner. Juste curieux de savoir pourquoi.
Sortie de commandes de test simples:
richard@ubuntu:~$ echo $GREP_OPTIONS
richard@ubuntu:~$
richard@ubuntu:~$ ls | grep o
Desktop
downloads
Dropbox
ebooks
workspace
richard@ubuntu:~$ ls | grep o --color=always | less -R
richard@ubuntu:~$ export GREP_OPTIONS="--color=always"
richard@ubuntu:~$ ls | grep o | less -R
- Le 1er grep sort au terminal en couleur (chaque «o» est rouge)
- Le 2e grep sort via moins de couleurs (comme 1)
- Mais le 3e grep sort en moins mais en noir et blanc - mais cela devrait être en couleur.
Il semble donc que grep ignore GREP_OPTIONS
. Est-ce un bug ou est-ce que je fais quelque chose de mal?
(Ubuntu 12.04.2, GNU grep 2.10)
grep v3.1
se plaint fortementGREP_OPTIONS
à chaque invocation:grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
alias grep='GREP_COLOR="1;33;40" LANG=C grep --color=auto'
pour surligner en jaune.Réponses:
Si
grep o
produit une sortie couleur, alors soitgrep
est un alias versgrep --color=auto
ougrep --color=always
(ou éventuellement plus d'options), soitGREP_OPTIONS
est défini sur une valeur qui contient--color=auto
ou--color=always
. Puisque$GREP_OPTIONS
est vide, ce doit être l'alias.Puisque
grep o | less -R
ne montre pas les couleurs, l'alias doit être àgrep --color=auto
(un choix judicieux). Avec l'alias, lagrep
commande reçoit toujours l'--color
option sur la ligne de commande, ce qui a priorité sur la variable d'environnement.Si vous souhaitez utiliser la variable d'environnement, supprimez la définition d'alias de votre
~/.bashrc
ou pour une sessionunalias grep
. Vous pouvez remplaceralias grep='grep --color=auto'
parexport GREP_OPTIONS='--color=auto'
: ils ont essentiellement la même signification, sauf que:GREP_OPTIONS
d'une valeur différente ne remplace que cette dernière;grep
intervient uniquement lorsque vous exécutez à partir d'un shell interactif, tandis que le paramètreGREP_OPTIONS
s'applique également lorsqu'ilgrep
est exécuté à partir de scripts et d'autres applications.Ne jamais mettre
--color=always
ou la plupart des autres optionsGREP_OPTIONS
: cela casserait de nombreux programmes qui analysent la sortie degrep
.--color=auto
est à peu près la seule option sûre à installerGREP_OPTIONS
. Pour toute autre chose, utilisez l'alias. Les futures versions de GNU grep abandonneront le support de l'option pour cette raison.Notez que la définition d'alias entre
~/.bashrc
(c'est un paramètre shell), tandis que la définition de variable d'environnement entre~/.profile
(c'est un paramètre session). Voir Existe - t-il un fichier équivalent ".bashrc" lu par tous les shells?Si vous souhaitez exécuter la commande sans créneau une seule fois, exécutez
\grep
au lieu degrep
(en citant n'importe quelle partie du nom contourne la recherche d'alias).la source
GREP_OPTIONS
est déconseillé au profit de laalias
variante.