เพราะฉันขี้เกียจ .... ทุกครั้งที่ฉันต้องการใช้ grep ฉันต้องการให้ grep -n --colour มีวิธีการแมปนี้อย่างถาวรหรือไม่
เพราะฉันขี้เกียจ .... ทุกครั้งที่ฉันต้องการใช้ grep ฉันต้องการให้ grep -n --colour มีวิธีการแมปนี้อย่างถาวรหรือไม่
คำตอบ:
ในไฟล์ $ 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ซึ่งแสดงผลสีเป็นค่าเริ่มต้น
แก้ไข ~ / .bash_aliases เพิ่มบรรทัดที่ระบุว่า:
alias grep='grep -n --color'
~ / .bash_aliases ถูกรวมโดยอัตโนมัติโดย ~ / .bashrc หากมีอยู่
.profile
หากคุณต้องการให้มันทำงานในทุกเชลล์ไม่เพียงแค่ทุบตี
find /usr/share -name '*.txt' |xargs grep testing
คุณสามารถแก้ไขไฟล์. bashrc ที่อยู่ในโฮมไดเร็กตอรี่ของคุณที่กำหนดนามแฝง, ซึ่งจะแทนที่การตั้งค่าเริ่มต้น:
alias grep = 'grep -n --color'
หลังจากการเปลี่ยนแปลงปิดและเปิดเทอร์มินัลอีกครั้งเนื่องจากไฟล์อ่านได้เฉพาะเมื่อคุณเปิดเทอร์มินัล
หากคุณดูไฟล์. bashrc คุณจะพบนามแฝงเริ่มต้นเพิ่มเติมเช่น:
alias ll = 'ls -l'
นามแฝง la = 'ls -A'
นามแฝง l = 'ls -CF'
สร้างสคริปต์นอกเหนือจากนามแฝงที่กล่าวถึงในคำตอบอื่น ๆ นามแฝงจะไม่ทำงานเสมอไปและเลเยอร์สคริปต์นั้นเร็วพอสำหรับการแสดงผลที่มนุษย์อ่านได้
เลือกชื่อสั้น ๆ เช่นcgrep
:
#!/bin/sh
grep --color -n "$@"
วางไว้ในเส้นทางของคุณพูด~/bin
(ถ้าคุณอ่าน UPE สิ่งนี้อยู่ในเส้นทางของคุณ :) จากนั้นสิ่งเช่นนี้จะทำงาน:
find /usr/share -name '*.txt' | xargs cgrep testing
ฉันยังคงไม่ได้มีความสุขฉันต้องการ grep ให้สีเสมอเมื่อ stdout ไปยังเทอร์มินัลโดยไม่เลือกพิมพ์ cgrep