Qual è il comportamento del colore predefinito per grep --color
se no [=QUANDO ] è specificato?
La pagina man di grep afferma:
--color
[=QUANDO ], --color
[=QUANDO ]
- Circonda le stringhe corrispondenti (non vuote), le righe corrispondenti, le righe di contesto,
i nomi dei file, i numeri di riga, gli offset di byte e i separatori (per campi e
gruppi di righe di contesto) con sequenze di escape per visualizzarli a colori
sul terminale.
…
QUANDO è
never
, always
o auto
.
Fa l'impostazione predefinita [=QUANDO ] per grep --color
diventa:
grep --color=auto
o
grep --color=always
o dipende dall'implementazione e dalla piattaforma?
Nei miei test su Ubuntu 14.04 con GNU grep 2.16:
echo "foo bar" | grep --color foo
risulta in foo
bar
, mentre
echo "foo bar" | grep --color foo | grep --color bar
risulta in foo
bar
, quindi sembra che grep --color=auto
è in vigore qui. Tuttavia, non l'ho testato su Windows o Mac; Non so se questo comportamento sia universale.
Questo valore predefinito per [=QUANDO ] è leggermente diverso da ls --color
dove la pagina man per ls
afferma:
--color
[=QUANDO ]
- colora l'output.
QUANDO il valore predefinito è
always
oppure può essere never
o auto
.Qui, il comportamento dei QUANDO scomparsi è esplicito.
Risposta accettata:
L'impostazione predefinita è auto
.
grep --color
equivale a scrivere --color=auto
.
Questo sembra essere scarsamente documentato, oppure considerano il semplice --color
deprecato, ma può essere visto sia dai test che dal suo codice sorgente:
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;
Si noti che la mancanza di un optarg
risulta uguale a auto
o tty
.