แทนที่คำสั่ง grep ด้วย grep -n --colour?


17

เพราะฉันขี้เกียจ .... ทุกครั้งที่ฉันต้องการใช้ grep ฉันต้องการให้ grep -n --colour มีวิธีการแมปนี้อย่างถาวรหรือไม่


6
+1 สำหรับ "เพราะฉันขี้เกียจ ... " เคยพิจารณาอาชีพในฐานะนักพัฒนาหรือไม่? :)
ดร. Hannibal Lecter

คำตอบ:


31

ในไฟล์ $ HOME / .bashrc ของคุณเพิ่ม:

export GREP_OPTIONS="-n --color"

สิ่งนี้จะใช้ได้กับegrepเกินไปและในนามแฝงที่ใช้ grep

อัปเดต : GREP_OPTIONS เลิกใช้แล้วจาก grep 2.21 และถ้าคุณใช้วิธีแก้ปัญหานี้คุณจะเห็นคำเตือนต่อไปนี้:

grep: warning: GREP_OPTIONS is deprecated; please use an alias or script

ทางออกที่ดีที่สุดคือการจึงทำตามคำแนะนำ maco ในคำตอบของเขา หรือเปลี่ยนเป็นการใช้agซึ่งแสดงผลสีเป็นค่าเริ่มต้น


เคารพ.
myusuf3

4
เคารพ แต่ไม่มี upvote ใช่มั้ย ;-)
richq

1
นามแฝงสามารถใช้หลังจากท่อได้ดี พวกเขาไม่ได้รับเงินคืน
maco

1
เฮ้เฮ้ฉัน upvoted ฉันชอบสิ่งนี้ดีกว่านามแฝง
Dmitriy Likhten

@marco: ถูกต้อง (พร้อมทุบตี) - ฉันคิดถึง csh ซึ่งพวกเขาทำไม่ได้ อ๊ะ!
richq

29

แก้ไข ~ / .bash_aliases เพิ่มบรรทัดที่ระบุว่า:

alias grep='grep -n --color'

~ / .bash_aliases ถูกรวมโดยอัตโนมัติโดย ~ / .bashrc หากมีอยู่


8
หรือเพิ่มบรรทัดใน.profileหากคุณต้องการให้มันทำงานในทุกเชลล์ไม่เพียงแค่ทุบตี
LassePoulsen

1
สิ่งนี้จะไม่ทำงานกับ xargs เช่น:find /usr/share -name '*.txt' |xargs grep testing
rfabbri

2

คุณสามารถแก้ไขไฟล์. bashrc ที่อยู่ในโฮมไดเร็กตอรี่ของคุณที่กำหนดนามแฝง, ซึ่งจะแทนที่การตั้งค่าเริ่มต้น:

alias grep = 'grep -n --color'

หลังจากการเปลี่ยนแปลงปิดและเปิดเทอร์มินัลอีกครั้งเนื่องจากไฟล์อ่านได้เฉพาะเมื่อคุณเปิดเทอร์มินัล

หากคุณดูไฟล์. bashrc คุณจะพบนามแฝงเริ่มต้นเพิ่มเติมเช่น:

alias ll = 'ls -l'

นามแฝง la = 'ls -A'

นามแฝง l = 'ls -CF'


1

สร้างสคริปต์นอกเหนือจากนามแฝงที่กล่าวถึงในคำตอบอื่น ๆ นามแฝงจะไม่ทำงานเสมอไปและเลเยอร์สคริปต์นั้นเร็วพอสำหรับการแสดงผลที่มนุษย์อ่านได้

เลือกชื่อสั้น ๆ เช่นcgrep:

#!/bin/sh
grep --color -n "$@"

วางไว้ในเส้นทางของคุณพูด~/bin(ถ้าคุณอ่าน UPE สิ่งนี้อยู่ในเส้นทางของคุณ :) จากนั้นสิ่งเช่นนี้จะทำงาน:

find /usr/share -name '*.txt' | xargs cgrep testing

ฉันยังคงไม่ได้มีความสุขฉันต้องการ grep ให้สีเสมอเมื่อ stdout ไปยังเทอร์มินัลโดยไม่เลือกพิมพ์ cgrep

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.