มีไฟล์กำหนดค่า 'rc' สำหรับ grep / egrep หรือไม่ (~ / .egreprc?)


37

ฉันมักจะทำ grep เมื่อทำการพัฒนาและมีส่วนขยายบางอย่างที่ฉันไม่ต้องการค้นหา (เช่น * .pyc)

เป็นไปได้ไหมที่จะสร้าง ~ / .egreprc หรืออะไรทำนองนั้นและทำให้การกรองบางอย่างไม่แสดงผลไฟล์ pyc เสมอ

เป็นไปได้หรือฉันจะต้องสร้างนามแฝงสำหรับใช้ grep ในลักษณะนี้และเรียกนามแฝงแทน grep หรือไม่

คำตอบ:


66

ไม่มีไฟล์ rc สำหรับ grep แต่คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมGREP_OPTIONSเป็นรายการตัวเลือกที่คั่นด้วยช่องว่างที่จะใช้กับคำสั่ง grep ทั้งหมด สิ่งนี้ต้องใช้ GNU grep (การใช้งานบน Linux, Cygwin และระบบอื่น ๆ ที่ไม่ใช่ระบบฝังตัว) 2.4; --excludeตัวเลือกใหม่ที่จะ GNU grep 2.5 ใส่สิ่งนี้ในของคุณ~/.profile:

export GREP_OPTIONS='--color=auto --exclude=*.pyc --exclude-dir=.git'

หากคุณได้กระทำเช่นนี้ แต่ต้องการเรียกใช้ grep ครั้งเดียวโดยไม่ตัวเลือกเริ่มต้นที่คุณสามารถแทนที่พวกเขา (เช่นgrep --color=neverการบังคับให้สีออก) หรือลบข้อมูลในตัวแปรโดยการเรียกใช้GREP_OPTIONSGREP_OPTIONS= grep …

ความเป็นไปได้อีกอย่างคือการกำหนดนามแฝงสำหรับ grep ฉันใช้ชุดตัวเลือกต่อไปนี้:

alias regrep='grep -Er --exclude=*~ --exclude=*.pyc --exclude-dir=.bzr --exclude-dir=.git --exclude-dir=.svn'

1
นี่คือคำตอบที่ฉันต้องการ ฉันคิดว่าฉันจะอ่านเพิ่มเติมเกี่ยวกับ ~ / .profile @Gilles คุณเป็นผู้ชาย ขอบคุณสำหรับการช่วยเหลือ!
บางคนยังใช้ MS-DOS ของคุณ

1
พิจารณาว่ามีสองสิ่งที่เป็นไปได้ที่จะทำสิ่งนี้ (GREP_OPTIONS และนามแฝง grep): เป็นหนึ่งในนั้นหรือไม่ ทำไมหรือทำไมไม่?
Christoph Wurm

4
@Legate: ความแตกต่างที่สำคัญคือGREP_OPTIONSจะมีผลต่อการgrepโทรในสคริปต์ในขณะที่ชื่อแทนจะไม่ ดังนั้นGREP_OPTIONSควรใช้เท่าที่จำเป็น การใช้งานทั่วไปส่วนใหญ่ใช้สำหรับ--color=autoซึ่งเป็นหลักการที่ไม่เป็นอันตรายในสคริปต์เนื่องจากจะมีผลเฉพาะเมื่อเอาต์พุตเป็นเทอร์มินัล
Gilles 'หยุดชั่วร้าย'

GREP_OPTIONS เลิกใช้แล้ว โปรดใช้นามแฝงหรือสคริปต์
Steven Penny

3

แอ๊สามารถทำสิ่งที่คุณต้องการและอื่น ๆ

มันจะไม่สนใจไฟล์ไบนารีโดยค่าเริ่มต้นและคุณสามารถบอกได้ว่ามันจะไม่สนใจประเภทไฟล์อื่น ๆ ตามที่คุณต้องการ--notext, --nohtmlฯลฯ แต่ก็มีความสามารถในการกำหนดแฟ้ม rc เกินไปเพื่อให้คุณสามารถปรับแต่งด้วยประเภทของคุณเอง


ฉันใช้ ack เหมือนกัน แต่ฉันไม่ชอบ มันเร็วจริง ๆ แต่มันไม่สามารถใช้ได้ในการติดตั้งทั้งหมดดังนั้นฉันจึงคิดเกี่ยวกับ grep ขอบคุณ!
ใครบางคนยังใช้ MS-DOS ของคุณ

2
แอ๊เป็นโปรแกรม Perl เดียวสามารถดาวน์โหลดได้เป็นไฟล์ข้อความธรรมดา หากคุณต้องการคุณสามารถไปที่betterthangrep.com/ack-standaloneและตัดและวางเนื้อหาลงในไฟล์ ฉันทำมันเป็นพิเศษเพื่อให้สามารถใช้งานได้ทุกที่ที่คุณสามารถรัน Perl ได้
Andy Lester

0

ไม่ใช่คำตอบสำหรับคำถามของคุณโดยตรง แต่ grep มีตัวเลือกให้ละเว้นไฟล์ไบนารีทั้งหมดรวมถึง * .pyc ตัวเลือกคือ-I

grep -rI hello .

0

ไม่ใช่ใน GNU grep/ egrepไม่มี

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


3
GREP_OPTIONSเข้า~/.profileมาใกล้
Gilles 'SO- หยุดความชั่วร้าย'

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