Was ist das Standardfarbverhalten für grep --color
wenn nein [=WENN ] angegeben ist?
Auf der man-Seite von grep heißt es:
--colour
[=WANN ], --colour
[=WANN ]
- Umgeben Sie die übereinstimmenden (nicht leeren) Zeichenfolgen, übereinstimmenden Zeilen, Kontextzeilen,
Dateinamen, Zeilennummern, Byte-Offsets und Trennzeichen (für Felder und
Gruppen von Kontextzeilen) mit Escape-Sequenzen um sie auf dem Terminal farbig
anzuzeigen.
…
WANN ist
never
, always
, oder auto
.
Hat die Vorgabe [=WHEN ] für grep --color
werden:
grep --color=auto
oder
grep --color=always
oder hängt es von der Implementierung und Plattform ab?
In meinen Tests auf Ubuntu 14.04 mit GNU grep 2.16:
echo "foo bar" | grep --color foo
ergibt foo
bar
, während
echo "foo bar" | grep --color foo | grep --color bar
ergibt foo
bar
, also scheint grep --color=auto
ist hier in Kraft. Ich habe dies jedoch nicht unter Windows oder Mac getestet; Ich weiß nicht, ob dieses Verhalten universell ist.
Diese Vorgabe für [=WHEN ] unterscheidet sich ein wenig von ls --color
wo die Manpage für ls
Zustände:
--colour
[=WANN ]
- Ausgabe einfärben.
WANN ist standardmäßig
always
oder kann never
sein oder auto
.Hier das Verhalten des fehlenden WHEN ist explizit.
Akzeptierte Antwort:
Es ist standardmäßig auto
.
grep --color
ist dasselbe wie das Schreiben von --color=auto
.
Dies scheint mangelhaft dokumentiert zu sein, oder sie betrachten das einfache --colour
veraltet, aber das sieht man sowohl beim Testen als auch am Quellcode:
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;
Beachten Sie, dass das Fehlen eines optarg
ergibt dasselbe wie auto
oder tty
.