Bagaimana saya bisa grep dengan warna di terminal Mac OS X?

40

Baru-baru ini saya menemukan bahwa pada Mac OS XI dapat mengatur ini di shell saya ~/.profilesehingga ketika saya menggunakannya grepakan mencetak kecocokan dalam warna (putih satu merah).

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

Tetapi menyiapkan alias sepertinya semacam cara hack untuk melakukan ini. Sebelumnya saya telah mencoba tanpa hasil:

export GREP_COLOR=always           # works fine in Linux

Dan kemudian saya juga mencoba:

export GREP_COLOR="1;37;41"

Apakah ada cara yang lebih baik untuk melakukan ini daripada mengatur alias?

cwd
sumber
Saya tidak melihat inti dari pertanyaan Anda. Alias ​​adalah cara Anda melakukan ini. Itu untuk apa. exportvariabel lingkungan misalnya dalam .bash_profile, dan mendefinisikan alias grep='grep --color', dan Anda selesai.
Daniel Beck

Jawaban:

61

Per Grep_color di mac seperti yang disarankan oleh @lupincho, ini sepertinya berfungsi dengan baik dan tidak menggunakan alias:

export GREP_OPTIONS='--color=always'
export GREP_COLOR='1;35;40'
Steve Brown
sumber
13
Miliki +1 untuk ini sebagai solusi yang baik, namun menetapkan GREP_OPTIONS mengarah ke grep: warning: GREP_OPTIONS is deprecated; please use an alias or script. Sesuatu seperti ini sekarang lebih disukai:alias grep="`which grep` --color=always"
joelittlejohn
2
@joelittlejohn tidak berfungsi saat menggunakan grep di pipa dengan xargs, mis .:find /usr/share -name '*.txt' |xargs grep testing
rfabbri
1
@rfabbri Saya kira itu yang harus diambil dengan tim grep yang tidak menggunakan ini :)
joelittlejohn
3
--color=alwaysberbahaya. Skrip yang dijalankan dari shell juga akan mewarisi opsi dan menyebabkan kegagalan yang sangat misterius ketika grep mulai menyuntikkan kode warna ke output di dalam skrip. --color=autotidak menyebabkan masalah ini.
Sampo
1
@ joelittlejohn itu tidak benar untuk grep default di OSX. Bahkan pada High Sierra 10.13, ia menggunakan FREEBSD grep 2.5.1 yang BELUM didepresiasi GREP_OPTIONS. Itu hanya berlaku di gnu / grep
cde