Como posso grep com cores no terminal do Mac OS X?

40

Recentemente, descobri que no Mac OS XI posso configurá-lo no meu shell ~/.profilepara que, quando eu o use grep, imprima as correspondências em cores (branco e vermelho).

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

Mas a criação de um apelido parece uma maneira de hackear isso. Anteriormente, eu tentara sem sorte:

export GREP_COLOR=always           # works fine in Linux

E então eu também tentei:

export GREP_COLOR="1;37;41"

Existe uma maneira melhor de fazer isso do que configurar um alias?

cwd
fonte
Não vejo o objetivo da sua pergunta. Um alias é como você faz isso. É para isso que serve. exporta variável de ambiente, por exemplo .bash_profile, in , e define alias grep='grep --color', e pronto.
Daniel Beck

Respostas:

61

Por Grep_color no mac, como sugerido por @lupincho, isso parece funcionar bem e não usa um alias:

export GREP_OPTIONS='--color=always'
export GREP_COLOR='1;35;40'
Steve Brown
fonte
13
Marque +1 como uma boa solução, no entanto, a configuração de GREP_OPTIONS leva a grep: warning: GREP_OPTIONS is deprecated; please use an alias or script. Algo como isso é agora preferida:alias grep="`which grep` --color=always"
joelittlejohn
2
@joelittlejohn não funciona ao usar grep em tubos com xargs, por exemplo:find /usr/share -name '*.txt' |xargs grep testing
rfabbri
1
@rfabbri Eu acho que é um a tomar-se com a equipe grep que rejeitam esse :)
joelittlejohn
3
--color=alwaysé perigoso. Os scripts executados a partir do shell também herdarão a opção e causarão falhas muito misteriosas quando o grep iniciar a injeção de códigos de cores na saída dos scripts. --color=autonão causa esse problema.
Sampo
1
@joelittlejohn que não é verdadeiro para o grep padrão no OSX. Mesmo no High Sierra 10.13, ele usa o FREEBSD grep 2.5.1 que NÃO depreciou GREP_OPTIONS. Isso só é verdade no GNU / grep
cde