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 .