जवाबों:
alias cgrep='grep -nR --color'
उपयोग:
$ cgrep somestring /path/to/dir/or/file/with*/possible/*wild.card
मेरे पसंदीदा में से एक:
$ pgrep some-hanging-process
उन सभी प्रक्रियाओं को सूचीबद्ध करेगा जो कुछ हैंगिंग-प्रक्रिया के नाम से मेल खाती हैं जिन्हें आप निम्न स्थिति में उपयोग कर सकते हैं:
$ kill $(pgrep some-hanging-process)
grep
, grep -r
आमतौर पर इसे प्राथमिकता दी जानी चाहिए grep -R
क्योंकि पूर्व में सहानुभूति नहीं होती है।
मैंने पाया है कि grep को पिंप करने का सबसे अच्छा तरीका है ack का उपयोग करना , जो अनिवार्य रूप से एक इंटेलिजेंट इग्नोर लिस्ट (जैसे, खोज नहीं करता है। svn डायरेक्ट्रीज़, बैकअप फ़ाइलों को अनदेखा नहीं करता है), रिजल्ट्स के कलर हाइलाइटिंग के साथ है। perl regexps। यह वह है जो आप समय के 98.6% करने के लिए grep चाहते हैं।
मैंने इसे अपने .bashrc में सेट किया, बजाय एक अन्य का उपयोग किए grep को फिर से परिभाषित करने के लिए:
export GREP_OPTIONS="--color=auto"
मेरे लिए, यह लिनक्स, मैकओएसएक्स और फ्रीबीएसडी पर काम करता है।
GREP_OPTIONS
हार्मफुल माना जाना चाहिए। मैं alias
इसके बजाय उपयोग करने की सलाह देता हूं । यहां देखें: Bugs.launchpad.net/ubuntu/+bug/67141
मैं पर्यावरण चर GREP_OPTIONS से बचने की सलाह दूंगा, यह grep के हर आह्वान को प्रभावित करेगा, यहां तक कि जो अन्य उपकरणों के भीतर एम्बेडेड हैं। यदि वे उपकरण एक तरह से व्यवहार करने के लिए grep की अपेक्षा करते हैं, और आप उस व्यवहार को बदलते हैं, तो यह उन उपकरणों को तोड़ देगा और कर देगा।
इसके बजाय, आप एक उपनाम बना सकते हैं, जो अच्छी तरह से काम करता है। यह केवल आपके इंटरेक्टिव शेल (यानी कि आप खुद टाइप करते हैं) से कॉल को प्रभावित करेंगे।
अंतिम विकल्प, जो मुझे सबसे अधिक पसंद है, वह है एक आवरण स्क्रिप्ट बनाना जो grep को आमंत्रित करती है। मैं इसे एक उपनाम से अधिक पसंद करता हूं, क्योंकि मैं इस आवरण को अन्य कार्यक्रमों से आमंत्रित कर सकता हूं। जैसे vimgrep सेट करके विम में, ताकि vim के भीतर से मेरी खोजें कमांड-लाइन पर खोज करने के लिए समान रूप से व्यवहार करें।
$ cat `which grp`
#!/usr/bin/env bash
grep -rI --color --exclude-dir=\.bzr --exclude-dir=\.git --exclude-dir=\.hg --exclude-dir=\.svn --exclude-dir=build --exclude-dir=dist --exclude=tags $*
इसे प्रयोग करें:
$ grp pattern dir
जैसे
$ grp pattern .
वर्तमान dir और subdirs में सभी पाठ फ़ाइलों में 'पैटर्न' के उदाहरणों की खोज करेंगे।
ध्यान दें कि मैं अपनी स्क्रिप्ट को 'grep' कहने के बजाय 'grp' कहता हूं, ताकि मुझे हमेशा पता रहे कि मैं अपने अनुकूलित डिफॉल्ट्स के साथ grep को आमंत्रित कर रहा हूं या नहीं।
डिफ़ॉल्ट रूप से मैं शामिल हैं:
-r : search subdirs recursive
-I : skip binary files
--color : highlight matches in color
--exclude-dir : skip specified directories and their subdirs
--exclude : skip specified files
मुझे लगता है कि हर कोई सोर्स कंट्रोल डायर को छोड़ना चाहेगा: .hg .git .bzr .svn
'बिल्ड' और 'डिस्ट' को छोड़ना पाइथन-आईएमएस हैं, और शायद ज्यादातर लोगों पर लागू नहीं होता है। कोई संदेह नहीं है कि आप काम करते समय अपनी खुद की पहचान विकसित करेंगे।
of टैग्स ’ctags का आउटपुट है, जिसका उपयोग मैं function फंक्शन फंक्शन डेफिनिशन’ और जैसे टूल्स में करता हूं। जैसे कि इसमें मेरे स्रोत कोड से प्रत्येक शब्द और प्रतीक की कम से कम एक प्रति शामिल है, इसलिए यह आपके खोज परिणामों से लंघन के लायक है।
अंत में "$ *" के लिए बैश सिंटैक्स है "और कमांड-लाइन से अन्य सभी पैरामेट्स", इसलिए आप पैटर्न में पास हो सकते हैं और सामान्य की तरह खोज सकते हैं, और किसी भी अन्य कमांड लाइन के झंडे को ओवरराइड कर सकते हैं। ।
--color
विकल्प पहले से ही कई बार उल्लेख किया गया है, लेकिन मैं जोड़ने के लिए है कि यह रंग है, जिसमें मैचों के लिए एक वातावरण चर का उपयोग कर हाइलाइट किया जाएगा कॉन्फ़िगर करने के लिए संभव है करना चाहते हैं
export GREP_COLOR="1;33"
संदर्भ के लिए एएनएसआई रंग कोड का उपयोग करके रंग को एन्कोड किया जाना चाहिए
Black 0;30 Dark Gray 1;30
Blue 0;34 Light Blue 1;34
Green 0;32 Light Green 1;32
Cyan 0;36 Light Cyan 1;36
Red 0;31 Light Red 1;31
Purple 0;35 Light Purple 1;35
Brown 0;33 Yellow 1;33
Light Gray 0;37 White 1;37
GREP_COLOR
पदावनत किया गया है। GREP_COLORS
इसके बजाय उपयोग करें ।
चूँकि मैंने वास्तव में रंग सेट करने का कोई उदाहरण नहीं देखा था, यहाँ GNU grep के लिए एक सरल सेटअप है:
# turn on colors, natch.
export GREP_OPTIONS="--color=auto"
if [[ $(echotc Co) -ge 256 ]]; then
# 256 color terminals
export GREP_COLORS="mt=38;5;118:sl=:cx=:fn=38;5;18:ln=1;30:bn=37:se=30"
else
# everybody else
export GREP_COLORS="mt=31:sl=:cx=:fn=34:ln=1;30:bn=30:se=30"
fi
के बारे में सावधान रहें GREP_OPTIONS
; चीजों के अलावा किसी अन्य चीज के लिए इसका इस्तेमाल न करें --color=auto
या यह आपके सिस्टम पर grep का उपयोग करने वाली किसी भी स्क्रिप्ट को गड़बड़ कर देगा।