Jaké je výchozí chování barev pro grep --color
pokud ne [=WHEN ] je zadáno?
Manuálová stránka grep uvádí:
--colour
[=KDY ],--colour
[=KDY ]Shodné (neprázdné) řetězce, odpovídající řádky, kontextové řádky,
názvy souborů, čísla řádků, bajtové posuny a oddělovače (pro pole a
skupiny kontextových řádků) obklopte sekvencemi escape zobrazíte je barevně
na terminálu.
…
KDY jenever
,always
neboauto
.
Má výchozí [=WHEN ] pro grep --color
stát se:
grep --color=auto
nebo
grep --color=always
nebo to závisí na implementaci a platformě?
V mých testech na Ubuntu 14.04 s GNU grep 2.16:
echo "foo bar" | grep --color foo
výsledkem je foo
bar
, zatímco
echo "foo bar" | grep --color foo | grep --color bar
výsledkem je foo
bar
, takže to vypadá, že grep --color=auto
je zde v platnosti. Netestoval jsem to však na Windows nebo Mac; Nevím, jestli je toto chování univerzální.
Toto výchozí nastavení pro [=WHEN ] se trochu liší od ls --color
kde je manuálová stránka pro ls
uvádí:
--colour
[=KDY ]obarví výstup.
KDY výchozí jealways
nebo může býtnever
neboauto
.
Zde je chování chybějících KDY je explicitní.
Přijatá odpověď:
Výchozí nastavení je auto
.
grep --color
je stejné jako psaní --color=auto
.
Zdá se, že to není dostatečně zdokumentováno, nebo uvažují o jednoduchém --colour
zastaralé, ale to lze vidět jak z testování, tak z jeho zdrojového kódu:
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;
Všimněte si, že chybí optarg
výsledkem je totéž, co je rovno auto
nebo tty
.