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,alwaysneboauto.
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í jealwaysnebo může býtneverneboauto.
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 .