Quel est le comportement de couleur par défaut pour grep --color
si non [=QUAND ] est spécifié ?
La page de manuel de grep indique :
--color
[=QUAND ],--color
[=QUAND ]Entourez les chaînes correspondantes (non vides), les lignes correspondantes, les lignes de contexte,
les noms de fichier, les numéros de ligne, les décalages d'octets et les séparateurs (pour les champs et
les groupes de lignes de contexte) avec des séquences d'échappement pour les afficher en couleur
sur le terminal.
…
QUAND estnever
,always
, ouauto
.
Est-ce que la valeur par défaut [=WHEN ] pour grep --color
devenir :
grep --color=auto
ou
grep --color=always
ou cela dépend-il de la mise en œuvre et de la plate-forme ?
Dans mes tests sur Ubuntu 14.04 avec GNU grep 2.16 :
echo "foo bar" | grep --color foo
résultats dans foo
bar
, tandis que
echo "foo bar" | grep --color foo | grep --color bar
résultats dans foo
bar
, il semble donc que grep --color=auto
est en vigueur ici. Je n'ai cependant pas testé cela sur Windows ou Mac; Je ne sais pas si ce comportement est universel.
Cette valeur par défaut pour [=WHEN ] est un peu différent de ls --color
où la page de manuel pour ls
indique :
--color
[=QUAND ]colorie la sortie.
QUAND par défaut,always
ou peut êtrenever
ouauto
.
Ici, le comportement du WHEN manquant est explicite.
Réponse acceptée :
Il est par défaut sur auto
.
grep --color
revient à écrire --color=auto
.
Cela semble être mal documenté, ou ils considèrent le simple --color
obsolète, mais cela se voit à la fois dans les tests et dans son code source :
case COLOR_OPTION:
if (optarg)
{
if (!strcasecmp (optarg, "always") || !strcasecmp (optarg, "yes")
|| !strcasecmp (optarg, "force"))
color_option = 1;
else if (!strcasecmp (optarg, "never") || !strcasecmp (optarg, "no")
|| !strcasecmp (optarg, "none"))
color_option = 0;
else if (!strcasecmp (optarg, "auto") || !strcasecmp (optarg, "tty")
|| !strcasecmp (optarg, "if-tty"))
color_option = 2;
else
show_help = 1;
}
else
color_option = 2;
break;
Notez que l'absence d'un optarg
donne le même résultat car il est égal à auto
ou tty
.