क्या रंगीन आउटपुट कम रख सकते हैं?


310

क्या मैं इसके आउटपुट को मोनोक्रोम नहीं कर सकता हूं?

जैसे, से आउटपुट git diffरंगीन है, लेकिन git diff | lessनहीं है।



1
संबंधित लेकिन समान नहीं है। लिंक lessकेवल के बारे में है ।
हाबिल चेउंग

जवाबों:


359

उपयोग:

git diff --color=always | less -r

--color=alwaysवहाँ gitआउटपुट कलर कोड को बताने के लिए है भले ही आउटपुट एक पाइप (एक tty नहीं) है। और उन कलर कोड और अन्य एस्केप सीक्वेंस की व्याख्या करने के -rलिए बताने के lessलिए है। -RANSI रंग कोड के लिए ही उपयोग करें ।


3
@ ripper234। हाल के गिट्स के साथ, git config color.ui trueरंगीन आउटपुट प्राप्त करने के लिए पर्याप्त होना चाहिए, और स्वचालित रूप से लंबे आउटपुट के लिए पेजर चलाने के लिए।
स्टीफन जिमेनेज़

4
इस क्यू / ए के समानांतर में, watch --color 'git diff --cached --color=always'और इसके दोस्त आपको कुछ अतिरिक्त अजीबता ला सकते हैं।
एलोइस महदाल

27
less -Rबेहतर (या export LESS=Rमें /etc/profile) का उपयोग नहीं कर रहा है ? आप इसे एएनएसआई "रंग" एस्केप सीक्वेंस के अलावा कुछ भी प्रदर्शित करने की अनुमति क्यों देंगे? इसके अलावा, मैन पेज कहता हैWarning: when the -r option is used, less cannot keep track of the actual appearance of the screen (since this depends on how the screen responds to each type of control character). Thus, various display problems may result, such as long lines being split in the wrong place.
x-yuri

5
और यदि आप -rविकल्प बताना भूल गए हैं , तो आप lessप्रॉम्प्ट पर "-r" टाइप कर सकते हैं । यह कोर्स अधिकांश या सभी कम विकल्पों के साथ काम करता है (यानी, -iअज्ञानता को चालू करने के लिए)।
हरदिवस

3
grep --color=alwaysउसी तरह काम करता है। यह इस सवाल या जवाब का हिस्सा नहीं है, लेकिन मैं उस सवाल के बारे में गुगली करने से यहाँ मिला इसलिए यह है।
फ्रैंक ब्राइस

57

एक अन्य विकल्प रंगों को सक्षम करना और अपने पेजर के रूप में 'कम -r' का उपयोग करना होगा।

git config --global color.ui true
git config --global core.pager 'less -r'

इसका परिणाम यह होगा

[color]
    ui = true
[core]
    pager = less -r

अपने ~ / .itconfig में

अधिक जानकारी के लिए प्रो गिट बुक देखें


7
2.11 का उपयोग करते हुए, मैंने पाया कि color.ui trueपेजर के साथ काम नहीं किया, लेकिन color.ui alwaysकिया। जवाब पोस्ट किए जाने के बाद से यह बदल गया होगा।
टॉम ज़िक

1
यह विकल्प (रंग को सक्षम करने के लिए और डिफ़ॉल्ट रूप से अपने पेजर के रूप में '-r' का उपयोग करने के लिए) color.ui trueजैसे काम के लिए git -p diffऔर git -p status(जहां -pइसका मतलब है कि यह पूरी तरह से $ PAGER में पाइप का उत्पादन करता है less), यहां तक ​​कि गिट के पुराने संस्करणों के लिए भी (उदाहरण के लिए) , गिट 1.7.1)। लेकिन आपको अभी भी ज़रूरत है color.ui always(जो आउटपुट कोड्स के लिए git को बताता है "भले ही आउटपुट सीधे निर्दिष्ट हो git status | less -rया नहीं, रंगीन आउटपुट प्राप्त करने के लिए आउटपुट एक पाइप (एक tty नहीं है") git diff | less -r। जब आप आउटपुट पुनर्निर्देशन को स्पष्ट रूप से निर्दिष्ट करते हैं, तो आप पेजर से निकलने के बाद आउटपुट नहीं देखेंगे।
केनिची

29

कम ( या केवल ANSI एस्केप अनुक्रम) के लिए -r( --raw-control-chars) विकल्प का उपयोग करें -R

मेरे पास इसके लिए एक उपनाम है ~/.bashrc

alias rless='less -r'

7
वास्तव में मैंने अभी किया है alias less='less -r'। किसी भी कारण से नहीं?
ripper234

3
@ ripper234: मुझे अस्पष्ट रूप से याद है कि ऐसे मामले हो -rसकते हैं जब ज़रूरत न होने पर उपयोग करने से दृश्य समस्या पैदा हो सकती है।
enzotib

1
उदाहरण के लिए, जब आप अपने ackसाथ less -rगाड़ी चलाते हैं तो गाड़ी का रिटर्न कम हो जाता है
न्यू एलेक्जेंड्रिया

6
आप केवल उपयोग कर सकते हैं \lessयदि दृश्य गड़बड़ हो जाता है।
ब्रायन पीटरसन

4
उह, आपको किसी lessभी चीज़ के लिए सचेत करने की ज़रूरत नहीं है , बस $LESSपर्यावरण चर को उन झंडों के सेट पर सेट करें जिन्हें आप हमेशा प्रदान करना चाहते हैं less, जैसेexport LESS='-MRq -z-2 -j2’
wjv


10

बस "कम -r का उपयोग करें" पर एक और संस्करण जोड़ने के लिए:

मान चर के साथ पर्यावरण चर LESS का उपयोग करें (या जो पहले से है, उसे r जोड़ें)

जैसे, जैसे मैं अपने .bashrc में इसका उपयोग करता हूं

  export LESS=-Xr

(एक्स कम होने पर स्क्रीन को साफ़ करने से रोकता है)


1
दुर्भाग्य से -X भी मेरे लिए माउस स्क्रॉलिंग तोड़ता है: c
Xerus

5

मामले में किसी को भी एक पीजेन के साथ रखने में दिलचस्पी है jqऔर lessइसका उपयोग करके प्राप्त किया जा सकता है:

jq -C <jq args> file.json | less -R

जैसे

jq -C . file.json | less -R

स्रोत: https://github.com/stedolan/jq/issues/764#issuecomment-95355331


3

मुझे पता है कि यह पुराना है और कई लोग पहले ही सही जवाब दे चुके हैं, लेकिन मैं यह जोड़ना चाहूंगा कि इसका उपयोग करना हमेशा बेहतर होता है, less -Rless -rकि अगर आपको केवल एएनएसआई रंगों की आवश्यकता होती है, जैसा -rकि पात्रों को प्रदर्शित करने में समस्या हो सकती है।

मैनुअल से:

   -r or --raw-control-chars
          Causes "raw" control characters to be displayed.   The  default
          is  to display control characters using the caret notation; for
          example, a control-A (octal 001) is displayed as  "^A".   Warn‐
          ing:  when the -r option is used, less cannot keep track of the
          actual appearance of the screen (since this depends on how  the
          screen responds to each type of control character).  Thus, var‐
          ious display problems may result,  such  as  long  lines  being
          split in the wrong place.

   -R or --RAW-CONTROL-CHARS
          Like  -r,  but only ANSI "color" escape sequences are output in
          "raw" form.  Unlike -r, the  screen  appearance  is  maintained
          correctly  in  most  cases.   ANSI "color" escape sequences are
          sequences of the form:

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