ฉันจะ grep ด้วยสีใน terminal ของ Mac OS X ได้อย่างไร?


39

ฉันเพิ่งพบว่าใน Mac OS XI สามารถตั้งค่านี้ในเปลือกของฉัน~/.profileดังนั้นเมื่อฉันใช้grepมันจะพิมพ์การจับคู่สี (สีขาวสีแดงหนึ่ง)

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

แต่การตั้งค่านามแฝงดูเหมือนจะเป็นวิธีแฮ็คที่ทำสิ่งนี้ ก่อนหน้านี้ฉันได้ลองโดยไม่มีโชค:

export GREP_COLOR=always           # works fine in Linux

จากนั้นฉันก็ลอง:

export GREP_COLOR="1;37;41"

มีวิธีที่ดีกว่าในการทำสิ่งนี้มากกว่าตั้งค่านามแฝง


ฉันไม่เห็นคำถามของคุณ นามแฝงเป็นวิธีที่คุณทำเช่นนี้ นั่นคือสิ่งที่มันมีไว้เพื่อ exportตัวแปรสภาพแวดล้อมเช่นใน.bash_profileและกำหนดalias grep='grep --color'และคุณทำเสร็จแล้ว
Daniel Beck

2
ตรวจสอบสิ่งนี้: unix.stackexchange.com/questions/34790/grep-color-on-mac
lupincho

คำตอบ:


60

ต่อGrep_color บน macตามที่แนะนำโดย @lupincho สิ่งนี้ดูเหมือนว่าจะทำงานได้ดีและไม่ใช้นามแฝง:

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

13
มี +1 สำหรับนี้เป็นทางออกที่ดี แต่การตั้งค่า GREP_OPTIONS grep: warning: GREP_OPTIONS is deprecated; please use an alias or scriptนำไปสู่ บางสิ่งเช่นนี้เป็นที่ต้องการ:alias grep="`which grep` --color=always"
joelittlejohn

2
@joelittlejohn ไม่ทำงานเมื่อใช้ grep ในfind /usr/share -name '*.txt' |xargs grep testing
ไพพ์ที่

1
@rfabbri ฉันเดาว่าเป็นหนึ่งที่จะขึ้นกับทีม grep ที่เลิกใช้นี้ :)
joelittlejohn

3
--color=alwaysอันตราย. สคริปต์ที่เรียกใช้จากเชลล์จะสืบทอดตัวเลือกและทำให้เกิดความล้มเหลวอย่างลึกลับเมื่อ grep เริ่มฉีดรหัสสีเพื่อแสดงผลภายในสคริปต์ --color=autoไม่ได้ทำให้เกิดปัญหานี้
Sampo

1
@joelittlejohn ที่ไม่เป็นจริงสำหรับ grep เริ่มต้นใน OSX แม้แต่ใน High Sierra 10.13 ก็ยังใช้ grep FREEBSD 2.5.1 ซึ่งไม่ได้คิดค่าเสื่อมราคา GREP_OPTIONS เป็นจริงเฉพาะใน gnu / grep
cde
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.