GNU grep के लिए --color = ऑटो विकल्प का क्या अर्थ है?


14

AFAICT, न तो GNU के लिए मैन पेज grep, और न ही info grep, --color=autoइसका मतलब है कि जादू करना है।

मुझे उस ग्रह पर बहुत कम लोगों में से एक होना चाहिए, जिसके लिए इस विकल्प का अर्थ तुरंत स्पष्ट नहीं है।

मुझे शंका है कि --color=auto"है कहीं के बीच" --color=neverऔर --color=alwaysहै, लेकिन है कि अभी भी पत्ते बहुत ज्यादा अनिर्दिष्ट।

जवाबों:


14

इसके लिए नियम समान हैं ls, जो इसे बेहतर दस्तावेज़ बनाने का काम करता है man ls। का हवाला देते हुए:

फ़ाइल प्रकारों को अलग करने के लिए रंग का उपयोग करना डिफ़ॉल्ट रूप से और
साथ में अक्षम है --color = never। --Color = auto के साथ, ls केवल कलर कोड का उत्सर्जन करता है जब
मानक आउटपुट एक टर्मिनल से जुड़ा होता है। LS_COLORS पर्यावरण
चर सेटिंग्स बदल सकते हैं। इसे सेट करने के लिए dircolors कमांड का उपयोग करें।

तो यह कमांड को केवल रंग स्वरूपण जोड़ देगा जब आउटपुट टर्मिनल पर जा रहा है और नहीं, तो कहें, जब वह पाइप पर जा रहा है जहां पाइप का उपभोग करने वाला प्रोग्राम अच्छी तरह से रंग प्रारूपण को संभाल नहीं सकता है।


3
हाँ, मैं इस में चला मुख्य समय कम में पाइपिंग थे। यदि आप उपयोग less -Rकरते हैं तो आप मैच हाइलाइटिंग प्राप्त कर सकते हैं, लेकिन आपको --color=alwaysइसे काम करने के लिए grep निर्दिष्ट करने की आवश्यकता है ।
होलोते

10

चूंकि grepएक GNU प्रोग्राम है, एक अन्य विकल्प स्रोत कोड पर एक नज़र हो सकता है।


आंतरिक रूप से grep परीक्षण या static int color_optionतो के लिए 0, 1या 2

  • 0 कभी भी रंगीन आउटपुट का उपयोग न करें
  • 1 हमेशा रंगों का उपयोग करें
  • 2 केवल टर्मिनल पर प्रिंट करते समय रंगों का उपयोग करें

अब जब आप --color=autoअपने CLI पर तर्क के रूप में grep को सौंपते हैं, तो यह आंतरिक रूप से चर color_optionको सेट करता है 2

यदि color_optionबराबर होता है 2 grepतो आगे के परीक्षण कि क्या STDOUTएक टर्मिनल से जुड़ा हुआ है या उपयोगकर्ता द्वारा अक्षम रंगीन आउटपिट के माध्यम से shell environment variables। यदि पूर्व एक सच है और रंगीन आउटपुट की अनुमति है, grepतो यह मूल्यांकन करना जारी रहता है कि कौन से रंगों का उपयोग किया जाना चाहिए और अंत में आपके CLIरंग में प्रिंट होता है ।


स्रोत: (grep 2.21)

grep.c line 306, 2374, 2440
colorize-posix.c line 36
man isatty 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.