जवाबों:
के साथ --color=auto, grep मिलान स्ट्रिंग्स को उजागर करेगा यदि (और केवल अगर) आउटपुट सीधे टर्मिनल को लिखा जाता है और कहा टर्मिनल रंगीन आउटपुट प्रदर्शित करने में सक्षम है।
आम तौर पर, --color=autoआप क्या चाहते हैं। यदि, उदाहरण के लिए, आप एक URL से मिलान करने के लिए grep का उपयोग करते हैं और इसे Wget पर पाइप करते हैं, तो Wget \e[1;31mhttp://...वास्तविक URL के बजाय (और उस पर चोक) देखेंगे ।
निम्न आदेशों का परिणाम रंगीन आउटपुट में होना चाहिए:
echo Super User | grep --color=auto Super
echo Super User | grep --color=always Super | cat
हालाँकि, यह आदेश नहीं होना चाहिए:
echo Super User | grep --color=auto Super | cat
इस व्यवहार के साथ किसी भी असंगतता को बग माना जाना चाहिए।
विंडोज संस्करण (2.5.4) के लिए--color=auto नवीनतम ग्रेप के साथ - साथ ही मूल 2.5.4 पर यह आधारित है - अगर उत्पादन और केवल अगर हालत
isatty(STDOUT_FILENO) && getenv("TERM") && strcmp(getenv("TERM"), "dumb")
यह सच है, अर्थात, यदि और केवल अगर आउटपुट एक टर्मिनल को लिखा जा रहा है, तो पर्यावरण चरTERM को परिभाषित किया गया है और टर्मिनल गूंगा नहीं है ।
यह विंडोज के तहत वांछित व्यवहार का उत्पादन नहीं करेगा, क्योंकि TERMआम तौर पर परिभाषित नहीं किया जाता है। इस समस्या का एक आसान समाधान TERM=windowsनियंत्रण कक्ष में स्थापित है ।
Grep का नवीनतम संस्करण (2.14) आउटपुट को कलर करके इस समस्या को ठीक करता है यदि और केवल यदि स्थिति
isatty(STDOUT_FILENO) && should_colorize()
सच है, जहां should_colorize()पोसिक्स और Win32 के लिए अलग-अलग परिभाषित किया गया है:
पूर्व के लिए, स्थिति 2.5.4 में से एक के बराबर है; उत्तरार्द्ध के लिए, एनवायरमेंट वेरिएबल TERMको सेट करने की आवश्यकता नहीं है (यह सिर्फ नहीं हो सकता है dumb)।
sdgstd.h, तो यदि आउटपुट किसी फ़ाइल में पुनर्निर्देशित होता है , तो istty(stdout)रिटर्न 0।
grepऔर lessग्नूविन परियोजना से (gnuwin32.sourceforge.net)। उपयोगिता के cmd.exeसाथ सुधार हुआ है ansicon। less --color=autoउम्मीद के मुताबिक काम करता है: जब कोई रीडायरेक्शन लागू नहीं होता है और आउटपुट पुनर्निर्देशित नहीं होता है तो रंग का उपयोग करता है। लेकिन grep --color=autoदोनों मामलों में एस्केप सीक्वेंस नहीं छापते।