Wie kann ich im Mac OS X-Terminal mit Farbe arbeiten?

39

Ich habe kürzlich festgestellt, dass ich dies unter Mac OS XI in meiner Shell ~/.profileso einrichten kann, dass bei Verwendung grepdie Übereinstimmungen in Farbe (weiß, rot) gedruckt werden.

alias grep='GREP_COLOR="1;37;41" LANG=C grep --color=auto'

Das Einrichten eines Alias ​​scheint jedoch eine Art Hack-Methode zu sein. Bisher hatte ich es ohne Glück versucht:

export GREP_COLOR=always           # works fine in Linux

Und dann habe ich auch versucht:

export GREP_COLOR="1;37;41"

Gibt es eine bessere Möglichkeit, als einen Alias ​​einzurichten?

cwd
quelle
Ich verstehe den Grund Ihrer Frage nicht. Ein Alias ​​ist, wie Sie dies tun. Dafür ist es da. exportdie Umgebungsvariable zB in .bash_profile, und definieren alias grep='grep --color', und fertig.
Daniel Beck

Antworten:

60

Per Grep_color auf einem Mac, wie von @lupincho vorgeschlagen, scheint dies gut zu funktionieren und verwendet keinen Alias:

export GREP_OPTIONS='--color=always'
export GREP_COLOR='1;35;40'
Steve Brown
quelle
13
Haben Sie eine +1 für dies als eine gute Lösung, jedoch führt das Setzen von GREP_OPTIONS zu grep: warning: GREP_OPTIONS is deprecated; please use an alias or script. So etwas wird jetzt bevorzugt:alias grep="`which grep` --color=always"
joelittlejohn
2
@joelittlejohn funktioniert nicht, wenn grep in Pipes mit xargs verwendet wird, zB:find /usr/share -name '*.txt' |xargs grep testing
rfabbri
1
@ Rfabbri Ich denke, das ist eine, mit dem grep-Team aufzunehmen, das dies
verachtete
3
--color=alwaysist gefährlich. Skripte, die von der Shell ausgeführt werden, erben die Option und verursachen sehr mysteriöse Fehler, wenn grep beginnt, Farbcodes für die Ausgabe in Skripten einzufügen. --color=autoverursacht dieses Problem nicht.
Sampo
1
@joelittlejohn das ist nicht wahr für das standard grep in OSX. Selbst in High Sierra 10.13 wird FREEBSD grep 2.5.1 verwendet, das GREP_OPTIONS NICHT abgewertet hat. Das gilt nur für Gnu /
Grep