Come posso grep con il colore nel terminale di Mac OS X?


40

Recentemente ho scoperto che su Mac OS XI posso impostare questo nella mia shell in ~/.profilemodo che quando lo uso grepstamperà le partite a colori (bianco uno rosso).

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

Ma impostare un alias sembra una specie di modo hack per farlo. In precedenza avevo provato senza fortuna:

export GREP_COLOR=always           # works fine in Linux

E poi ho anche provato:

export GREP_COLOR="1;37;41"

Esiste un modo migliore per farlo che impostare un alias?


Non vedo il punto della tua domanda. Un alias è come lo fai. Ecco a cosa serve. exportla variabile d'ambiente, ad esempio in .bash_profile, e define alias grep='grep --color', e il gioco è fatto.
Daniel Beck

Risposte:


61

Per Grep_color su Mac come suggerito da @lupincho, questo sembra funzionare bene e non usa un alias:

export GREP_OPTIONS='--color=always'
export GREP_COLOR='1;35;40'

13
Avere un +1 per questo come una buona soluzione, tuttavia l'impostazione di GREP_OPTIONS porta a grep: warning: GREP_OPTIONS is deprecated; please use an alias or script. Qualcosa del genere è ora preferito:alias grep="`which grep` --color=always"
joelittlejohn,

2
@joelittlejohn non funziona quando si utilizza grep in pipe con xargs, ad esempio:find /usr/share -name '*.txt' |xargs grep testing
rfabbri,

1
@rfabbri Immagino che sia uno da affrontare con il team grep che l'ha deprecato :)
joelittlejohn,

3
--color=alwaysè pericoloso. Gli script eseguiti dalla shell erediteranno anche l'opzione e causeranno errori molto misteriosi quando grep inizia a iniettare codici colore per l'output all'interno degli script. --color=autonon causa questo problema.
Sampo,

1
@joelittlejohn che non è vero per il grep predefinito in OSX. Anche su High Sierra 10.13, utilizza FREEBSD grep 2.5.1 che NON ha deprezzato GREP_OPTIONS. Questo è vero solo in gnu / grep
cde,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.