ग्रेप डिफ़ॉल्ट रंग विकल्प


11

grep linux में सबसे ज्यादा इस्तेमाल होने वाली कमांड में से एक है। यह मुझे लगता है कि इसकी मूल विशेषता आउटपुट लाइनों पर आपके द्वारा खोजे गए स्ट्रिंग को उजागर करने के लिए है। यह - रंग विकल्प द्वारा प्राप्त किया जा सकता है।

टाइपिंग - कलर हर बार कष्टप्रद होता है और उत्पादक भी नहीं। क्या grep --color के रूप में व्यवहार करने के लिए grep को बदलने का कोई तरीका है।

मैंने इसे grepd नाम की एक छोटी स्क्रिप्ट लिखने की कोशिश की और इसे मेरे PATH चर में जोड़ा। लेकिन स्क्रिप्ट नहीं इनपुट grepd पर काम करता है । किसी भी सुझाव कृपया।

#!/bin/bash
grep --color $1 $2

जवाबों:


21

बस अपने शेल की कॉन्फ़िगरेशन फ़ाइल में निम्न उपनाम जोड़ें, उदाहरण के लिए .bashrcया .bash_profile(इस पर निर्भर करता है कि आप किसका उपयोग करते हैं, यहां देखें ):

alias grep='grep --color=auto'

आप बस के रूप में उपयोग कर सकते हैं grep

आमतौर पर स्क्रिप्ट बनाने की कोई आवश्यकता नहीं होती है जब साधारण कमांड एलियास ठीक काम करता है। यदि आप अधिक विकल्प पास करना चाहते हैं तो वास्तव में आपकी स्क्रिप्ट भी काम नहीं करेगी grep। मामले में आपको एक छोटे से स्निपेट की आवश्यकता होती है जो तर्कों से निपट सकती है, आपको कार्यों का उपयोग करना चाहिए


9
या समकक्ष, GREP_OPTIONSपर्यावरण चर सेट करें :export GREP_OPTIONS='--color=always'
Jérôme

यह रंग विकल्प नहीं जोड़ता है यदि आप fgrep या egrep का उपयोग करते हैं, तो आपको उन लोगों के लिए अलग उपनाम की आवश्यकता होगी। इसके अलावा, @ Jérôme: GREP_OPTIONS को grep मैन पेज में पदावनत के रूप में चिह्नित किया गया है।
थायने

@ केवल GNU grep के लिए और दूसरों को FreeBSD grep पसंद नहीं है। और जहां तक ​​मैं बता सकता हूं, यह 4 साल हो गया है, जो बदल गया है और यह अभी भी समर्थित है। मूल्यह्रास का मतलब हटाया नहीं जाता है।
cd

यह वही है जो मैं आमतौर पर करता हूं, हालांकि यह कुछ मामलों में सही काम नहीं करता है। उदाहरण के लिए: some_command | xargs grep fooरंगीन नहीं किया जाएगा क्योंकि xargs उपनाम का उपयोग नहीं करता है।
टीएम।

2
#!/bin/sh
exec grep --color "$@"

यह शेल स्क्रिप्ट के साथ कमांड को "रैपिंग" करने के मानक तरीके को दिखाता है, जब कमांड आपके द्वारा पसंद किए जाने वाले तरीके पर काम नहीं करता है।

execबचा जाता है एक अतिरिक्त प्रक्रिया (स्क्रिप्ट के लिए एक और ग्रेप के लिए एक) का निर्माण। आप चाहें तो इसे छोड़ सकते हैं।

"$@"स्क्रिप्ट के सभी तर्क की जगह, कोई देखते हैं कि कितने मायने रखते हैं। यह रिक्त स्थान और अन्य वर्णों के साथ तर्क को सही ढंग से संरक्षित करता है जो शेल के लिए विशेष हैं।


"एग्ज़िक ग्रीप" को "एक्ज़ीक्यूटिव / बिन / ग्रेप" होना चाहिए
बेरेन्ड डी बोअर

2
@BerenddeBoer वास्तव में नहीं। "अमल grep" बस ठीक काम करेगा। Grep के लिए रास्ता खोजने में कुछ भी गलत नहीं है।
केस्टरस्टर

-1

export GREP_COLORS='AUTO'अपने ~ / .bashrc में डालने की कोशिश करो - मेरे लिए यह काम करता है।

से man grep

       --color[=WHEN], --colour[=WHEN]
          Surround  the  matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences
          to display them in color on the terminal.  The colors are defined by the environment variable GREP_COLORS.  The deprecated environment variable GREP_COLOR is still supported, but  its  setting
          does not have priority.  WHEN is never, always, or auto.

5
GREP_COLORSवास्तविक रंग सेट है। सेटिंग में AUTOकोई रंग नहीं दिखाना चाहिए। निर्यात GREP_OPTIONS = '- रंग = ऑटो' उत्तर होना चाहिए।
user137369
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.