Jak mogę grepować kolorem w terminalu Mac OS X?

39

Niedawno odkryłem, że w Mac OS XI mogę to ustawić w mojej powłoce ~/.profile, aby po użyciu grepwydrukować mecze w kolorze (biały czerwony).

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

Ale ustawienie aliasu wydaje się być sposobem na hackowanie. Wcześniej próbowałem bez powodzenia:

export GREP_COLOR=always           # works fine in Linux

A potem próbowałem też:

export GREP_COLOR="1;37;41"

Czy jest na to lepszy sposób niż skonfigurowanie aliasu?

cwd
źródło
Nie rozumiem sensu twojego pytania. Alias ​​to sposób, w jaki to robisz. Po to jest. exportzmienna środowiskowa np. w .bash_profilei zdefiniuj alias grep='grep --color', i gotowe.
Daniel Beck

Odpowiedzi:

60

Na Grep_color na Macu, jak sugeruje @lupincho, wydaje się, że działa dobrze i nie używa aliasu:

export GREP_OPTIONS='--color=always'
export GREP_COLOR='1;35;40'
Steve Brown
źródło
13
Daj +1 za to dobre rozwiązanie, jednak ustawienie GREP_OPTIONS prowadzi grep: warning: GREP_OPTIONS is deprecated; please use an alias or script. Preferowane jest teraz coś takiego:alias grep="`which grep` --color=always"
joelittlejohn,
2
@joelittlejohn nie działa, gdy używasz grep w rurach z xargs, np .:find /usr/share -name '*.txt' |xargs grep testing
rfabbri
1
@rfabbri Wydaje mi się, że to jeden z członków zespołu grep, który przestał to
robić
3
--color=alwaysjest niebezpieczny. Skrypty uruchamiane z powłoki również odziedziczą tę opcję i powodują bardzo tajemnicze awarie, gdy grep zaczyna wstrzykiwać kolorowe kody do wyjścia w skryptach. --color=autonie powoduje tego problemu.
Sampo
1
@joelittlejohn, które nie jest prawdziwe dla domyślnego grep w OSX. Nawet w High Sierra 10.13 używa FREEBSD grep 2.5.1, który NIE ZOSTAŁ amortyzowany GREP_OPTIONS. Dotyczy to tylko gnu / grep
cde