grep --color ANSI कोड ESC [K - जोड़ता है - यह प्रदर्शित पाठ को बदल सकता है


9

क्रेप \e[Kअपने रंगीन आउटपुट में ANSI कोड क्यों जोड़ता है ? मैं इसे देख नहीं सकता, लेकिन जाहिर है कि डेवलपर्स कर सकते हैं। यह एक ANSI / VT100 टर्मिनल कोड है जिसका उपयोग "वर्तमान कर्सर स्थिति से लाइन के अंत तक स्पष्ट रेखा" के लिए किया जाता है ।

फ्रिंज मामले में, grep टर्मिनल डिस्प्ले से "गायब" हो सकता है। उदाहरण के लिए:

echo -e "ab\rc"
echo -e "ab\rc" |grep --color=always "c"

सरल गूंज प्रदर्शित करता है: cb, लेकिन colorized प्रदर्शन से पता चलता है:c

अंतर्निहित एन्कोडेड पाठ है: echo -e 'ab\r\033[01;31m\033[Kc\033[m\033[K' हालांकि, \e[Kकोड के बिना , echo -e 'ab\r\033[01;31mc\033[m'अपेक्षा के अनुरूप काम करता है!

इन \e[Kकोड के grep को शामिल करने का क्या कारण है । मैं दूसरी स्क्रिप्टिंग पासिंग के ओवरलेइंग की अनुमति के लिए एक स्क्रिप्ट लिख रहा हूं , जैसे c=--color=always; ls $c /bin/gzip | grep $c 'z':। इसलिए मुझे यह समझने की आवश्यकता है कि grep क्यों उपयोग करता है \e[K

जवाबों:


11

आप GREP_COLORSपरिवेश चर सेट करके इस व्यवहार को बदल सकते हैं :

export GREP_COLORS=ne
echo -e "ab\rc" | grep --color=always "c"

से grepआदमी पेज:

          ne     Boolean  value  that prevents clearing to the end of line
                 using Erase in Line (EL) to Right  (\33[K)  each  time  a
                 colorized  item  ends.   This  is  needed on terminals on
                 which EL is not supported.  It  is  otherwise  useful  on
                 terminals  for  which  the back_color_erase (bce) boolean
                 terminfo capability  does  not  apply,  when  the  chosen
                 highlight colors do not affect the background, or when EL
                 is too slow or causes too much flicker.  The  default  is
                 false (i.e., the capability is omitted).

यह पहली पंक्ति में बाकी लाइन की पृष्ठभूमि को सही रंग में सेट करने के लिए किया गया है, अगर इसे पहले बदल दिया गया था (हालांकि डिफ़ॉल्ट रूप से यह नहीं है; कोई व्यक्ति इसे अपनी सेटिंग में ऐसा करने के लिए सेट कर सकता है)।

आप उन अन्य विकल्पों के साथ भी खेलना चाहते हैं जिन्हें सेट किया जा सकता है GREP_COLORS; पूर्ण विवरण के लिए मैन पेज देखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.