Verwenden Sie --color=always
.
grep
Erkennt, ob die Ausgabe in eine Pipe (oder Datei) erfolgt. Sie möchten meistens keine Farben, wenn die Ausgabe in einer Datei erfolgen soll - das sind Escape-Sequenzen für das Terminal. Normalerweise:
foo ^[[01;31m^[[Kbar^[[m^[[K
von zB:
grep pattern file > result
Zum Überschreiben verwenden --color=always
.
grep --color=always pattern file | ...
Beispiel:
Datei haben:
ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz
Dann
grep --color=always ID file | grep --color=always 2013 | grep foo
würde färben ID
, 2013
und foo
.
grep --color=always ID file | grep 2013 | grep foo
würde färben ID
und foo
, aber nicht 2013
.
1 Wichtig: Sie müssen auch bedenken, dass die hinzugefügte Unordnung von Farben an den nächsten Befehl in der Kette übergeben wird. Sobald der Ausweis gefärbt ist, können Sie ihn (mit Leichtigkeit) nicht mehr zuordnen, zID=111
.
Manchmal möchte man vielleicht Terminalfarben in einer Datei haben . Versuchen Sie zB
grep --color=always foo file > result
cat result
Die resultierende Datei wäre jedoch nur sehr eingeschränkt portabel.
Die Färbung selbst ist auch eine Erweiterung.
Wie von der guten @slm erwähnt , können Sie hinzufügen:
export GREP_OPTIONS="--color=always"
zu Ihrem .bashrc
etc, aber nicht, wenn Sie aus irgendeinem Grund die Implikationen wirklich verstehen und es immer noch tun wollen. Es würde in vielerlei Hinsicht grep
aufgrund der oben genannten Tatsache brechen 1 .
Fügen Sie ein hinzu, alias
wenn Sie es häufig verwenden.
alias cgrep='grep --color=always'
GREP_OPTIONS
und --color
nehmen Sie drei Optionen : never
, auto
und always
. Die beiden ersten sollten die einzigen sein, die berücksichtigt werden GREP_OPTIONS
.
Sie können auch auf GREP_COLORS
den man
Seiten oder bei gnu grep nachsehen .