मैन पेजों में रंग


63

जब मैं अपने 'कंसोल' में एक आदमी पृष्ठ को xtermदेखता हूं (नहीं ) तो मुझे कुछ रंग दिखाई देता है, लेकिन मुझे यह मेरे xterm'एस' में नहीं मिलता है (जैसे konsole) क्या कोई ऐसा तरीका है जिससे मैं इसे सक्षम कर सकता हूं? उम्मीद है कि एक काफी सरल समाधान?

जवाबों:


78

आपको termcap(5)सुविधा का उपयोग करने की आवश्यकता है । कुछ यूनियनों का मैन पेज कहता है कि यह टूल अप्रचलित है और इसका उपयोग करना है terminfo, लेकिन यह अभी भी दूसरों पर उपलब्ध है (और terminfoअधिक जटिल है)।

अधिक महत्वपूर्ण बात, lessउपयोग करता है termcap


के लिए रंग निर्धारित करना less

मैं निम्नलिखित करता हूं ताकि lessऔर man(जो उपयोग करता है less) का रंग होगा:

$ cat ~/.LESS_TERMCAP 
export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green
export LESS_TERMCAP_md=$(tput bold; tput setaf 6) # cyan
export LESS_TERMCAP_me=$(tput sgr0)
export LESS_TERMCAP_so=$(tput bold; tput setaf 3; tput setab 4) # yellow on blue
export LESS_TERMCAP_se=$(tput rmso; tput sgr0)
export LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 7) # white
export LESS_TERMCAP_ue=$(tput rmul; tput sgr0)
export LESS_TERMCAP_mr=$(tput rev)
export LESS_TERMCAP_mh=$(tput dim)
export LESS_TERMCAP_ZN=$(tput ssubm)
export LESS_TERMCAP_ZV=$(tput rsubm)
export LESS_TERMCAP_ZO=$(tput ssupm)
export LESS_TERMCAP_ZW=$(tput rsupm)
export GROFF_NO_SGR=1         # For Konsole and Gnome-terminal

और फिर मेरे में ~/.bashrc, मैं यह करता हूं:

# Get color support for 'less'
export LESS="--RAW-CONTROL-CHARS"

# Use colors for less, man, etc.
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP

नोट: चर पर प्रलेखनLESS_TERMCAP_* देखें ? यह कैसे काम करता है।

अंतिम परिणाम

    मैन पेज के एस.एस.


7
मेरा मानना ​​है कि इसका कारण यह है कि यह जिस तरह से काम करता है, वह इसलिए है क्योंकि 'कंसोल' रंग में 'अंडरलाइन' का अनुवाद करता है, जहां-एक्स 11 सामान अंडरलाइन का समर्थन करता है। आप इस सिद्धांत echo -e "\e[04mhello world\e[0m"को कंसोल और अपने X11 टर्मिनल दोनों में टाइप करके और अंतर देखकर परीक्षण कर सकते हैं । इसलिए यह ऊपर की गालियाँ झूठ बोलने के लिए झूठ बोलती हैं, जिसके बारे में यह बोल्ड / अंडरलाइन करने के लिए क्या कोड्स की जरूरत होती है और इसके बजाय कलर एस्केप कोड बनाने के लिए मजबूर करती है।
केंट फ्रेड्रिक

7
दरअसल, नीले रंग में अंडरलाइन के अनुवाद के ऐतिहासिक कारण हैं, मूल पीसी ग्राफिक्स एडेप्टर एमडीए और सीजीए के पाठ मोड में वापस जाना (वास्तव में सीजीए पाठ मोड अभी भी उपलब्ध हैं)। वे ग्राफिक्स एडेप्टर प्रति चरित्र दो बाइट्स संग्रहीत करते हैं: एक ASCII कोड, एक विशेषताओं को पकड़े हुए। एमडीए ने विशेषता बाइट को अंडरलाइन, उज्ज्वल, निमिष और व्युत्क्रम के संयोजन के रूप में व्याख्या की, जबकि सीजीए ने व्याख्या की कि अग्रभाग और पृष्ठभूमि रंग के रूप में। और यह हुआ कि एमडीए विशेषता ने अंडरलाइन के लिए काले पर नीले रंग के लिए सीजीए विशेषता की बराबरी की।
celtschk

3
यह कोनो कंसोल या गनोम-टर्मिनल में काम नहीं करता है। मैंने उन्हें सेट किया, और कर्सर और स्थिति पृष्ठ के लिए केवल रंग परिवर्तन है। मैं पता चला है मैं की जरूरत है: export GROFF_NO_SGR=1
CMCDragonkai

2
यह बहुत सारे उप-गोले हैं। इस सरल दृष्टिकोण पर क्या फायदा है ?
टॉम हेल

1
@ टोमाले, मुख्य रूप से क्रॉस-सिस्टम / टर्मिनल कम्पैटिबिलिटी (और स्क्रिप्ट को दूसरों के साथ साझा करने की क्षमता इस तरह से अस्पष्ट है)। यदि आप कभी भी अपने आप को एक ऐसे बॉक्स पर काम करते हुए पाते हैं जो अलग-अलग नियंत्रण कोड का उपयोग करता है, और आप उस पर अपनी शेल प्रोफ़ाइल को scp / rsync करते हैं, जब नियंत्रण कोड उस उदाहरण की तरह सभी हार्ड-कोडित होते हैं, तो वे गंतव्य पर अपेक्षित रूप से काम नहीं कर सकते हैं। मशीन, और आप गार्बल्ड आउटपुट के साथ समाप्त हो सकते हैं। बेशक, अगर स्क्रिप्ट केवल एक या दो ज्ञात मशीनों / टर्मिनल-एमस पर चलेगी, तो हार्ड-कोडेड दृष्टिकोण ठीक है।
मार्क जी।

15

आप एक अलग पेजर का उपयोग करके इस मुद्दे को हल कर सकते हैं, उदाहरण के लिए mostmanवास्तव में PAGERपर्यावरण चर में निर्दिष्ट कार्यक्रम का उपयोग करेगा । से आदमी (1) आदमी पेज:

प्रबंधक, पेजर

यदि $ MANPAGER या $ PAGER को सेट किया जाता है ($ MANPAGER का उपयोग वरीयता में किया जाता है), तो इसका मान मैनुअल पेज को प्रदर्शित करने के लिए उपयोग किए जाने वाले प्रोग्राम के नाम के रूप में उपयोग किया जाता है। डिफ़ॉल्ट रूप से, पेजर-एस का उपयोग किया जाता है।

मान एक साधारण कमांड नाम या तर्कों के साथ एक कमांड हो सकता है, और शेल उद्धरण (बैकस्लैश, सिंगल कोट्स, या डबल कोट्स) का उपयोग कर सकता है।

यह कई कमांड को जोड़ने के लिए पाइप का उपयोग नहीं कर सकता है; यदि आपको इसकी आवश्यकता है, तो एक रैपर स्क्रिप्ट का उपयोग करें, जो फ़ाइल को तर्क के रूप में या मानक इनपुट पर प्रदर्शित करने के लिए ले सकती है।

यदि mostआपके सिस्टम पर इंस्टॉल किया गया है, तो लॉन्च करने से पहले यह कोशिश करें man:

export PAGER=most

2
mostइस काम के लिए, स्थापित किया जाना चाहिए।
enzotib

3
mostअजीब कीबाइंडिंग है ... जो विन्यास योग्य नहीं हैं।
मतीन उल्हाक

10

डिफ़ॉल्ट सुर्खियाँ मेरी आँखों को चोट पहुँचाती हैं। यह सेटअप मेरे manपृष्ठ पढ़ने में बहुत सुधार करता है :

रंगीन मैन पेज उदाहरण

अपने `~ .bashrc 'में निम्नलिखित जोड़ें:

# Have less display colours
# from: https://wiki.archlinux.org/index.php/Color_output_in_console#man
export LESS_TERMCAP_mb=$'\e[1;31m'     # begin bold
export LESS_TERMCAP_md=$'\e[1;33m'     # begin blink
export LESS_TERMCAP_so=$'\e[01;44;37m' # begin reverse video
export LESS_TERMCAP_us=$'\e[01;37m'    # begin underline
export LESS_TERMCAP_me=$'\e[0m'        # reset bold/blink
export LESS_TERMCAP_se=$'\e[0m'        # reset reverse video
export LESS_TERMCAP_ue=$'\e[0m'        # reset underline
export GROFF_NO_SGR=1                  # for konsole and gnome-terminal

जीत के लिए, दस्तावेज़ में अपना प्रतिशत प्रदर्शित करने के लिए export MANPAGER='less -s -M +Gg' (स्रोत) के साथ गठबंधन करें।


3
जैसा कि @CMCDragonkai ने एक अन्य उत्तर पर एक टिप्पणी में उल्लेख किया है, इसके लिए export GROFF_NO_SGR=1कुछ टर्मिनल एमुलेटर पर काम करने की आवश्यकता है।
बेन

1
जीत के लिए!! मुझे% डिस्प्ले से प्यार है export MANPAGER='less -s -M +Gg'
मिकी

5

आप का उपयोग करते हैं ओह माई Zsh , आप जोड़ सकते हैं colored-man-pagesकरने के लिए pluginsअपने में सरणी .zshrcफ़ाइल।


3

Save सबसे ’लगातार बचाओ

टर्मिनल खोलें ( Ctrl+ Alt+ T)

  1. 'सबसे' स्थापित करें।

    sudo apt-get install most
    
  2. संपादन .bashrc, टाइप करें:

    nano ~/.bashrc
    
  3. इन पंक्तियों को जोड़ें:

    # color man-pages persistently
    export PAGER='most'
    
  4. सहेजें

    ( Ctrl+ O) -> Enter-> ( Ctrl+ X)

  5. ताज़ा करना

    source ~/.bashrc
    
  6. परीक्षा

    man ln
    

यह भी xterm में काम करता है।


नैनो खोलने से बचने के लिए, आप टर्मिनल से bashrc में संलग्न कर सकते हैं: sudo apt इंस्टॉल सबसे; इको "एक्सपोर्ट पेजर = 'सबसे'" >> ~ / .bashrc; source ~ / .bashrc
होगा

1

Http://nion.modprobe.de/blog/archives/569-colored-manpages.html से लिया गया

अंश:

$ mkdir ~/.terminfo/ && cd ~/.terminfo

अब terminfoवर्णन प्राप्त करें (निम्न के रूप में सहेजें।

# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-pcolor
mostlike|manpages with color looking like most, 
    am, hs, km, mir, msgr, xenl, 
    cols#80, it#8, lines#24, wsl#40, 
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
    bel=^G, bold=\E[1m\E[31m, clear=\E[H\E[2J, cr=^M, 
    csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
    cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, 
    cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
    dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, 
    dsl=\E]0;\007, ed=\E[J, el=\E[K, enacs=\E)0, fsl=^G, 
    home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, 
    is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H, 
    kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
    kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, 
    kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
    kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
    kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, 
    kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
    kfnd=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, 
    kslt=\E[4~, rc=\E8, rev=\E[7m\E[34m, ri=\EM, rmacs=^O, 
    rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, 
    rmso=\E[m, rmul=\E[m, 
    rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7, 
    sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, 
    smkx=\E[?1h\E=, smso=\E[1;30m\E[47m, smul=\E[32m, 
    tbc=\E[3g, tsl=\E]0;, u6=\E[%i%d;%dR, u7=\E[6n, 
    u8=\E[?1;2c, u9=\E[c, 

अब tic( संकलन एंट्री-विवरण संकलक) का उपयोग करके इसे संकलित करें :

$ tic mostlike.txt

(आप mostlike.txtसंकलन के बाद फ़ाइल को हटाना चाह सकते हैं ।)

और फिर बस *rcअपने पसंदीदा शेल की फ़ाइल में एक उपनाम को परिभाषित करें।

$ alias man="TERMINFO=~/.terminfo/ LESS=C TERM=mostlike PAGER=less man"

यदि आप टर्मिफ़ फ़ाइल को संशोधित करना चाहते हैं, infocmp mostlikeतो बाद में इसकी सामग्री प्राप्त करने के लिए उपयोग करें।


11
यदि आप यहां स्रोत को संक्षेप में देते हैं, तो यह मदद करता है, इसलिए लोग यह देख सकते हैं कि इसके माध्यम से क्लिक करने के लिए बिना यह क्या कहता है (और यदि साइट कभी भी नीचे जाती है)
माइकल मर्जेक

3
कृपया उत्तर प्रदान करें, उत्तर के लिए लिंक ही नहीं। हालांकि, आपके उत्तर का समर्थन करने वाले लिंक प्रदान करना बहुत अच्छा है। कल्पना कीजिए कि मैं इस सवाल के लिए Googling था --- StackExchange पर एक अच्छा जवाब जल्दी से यह परिणाम के पहले पृष्ठ के लिए रास्ता मिल जाएगा।
स्टीफन लासिवस्की

लिंक मर चुका है।
दूरबीन

यह mostlike.txtऑनलाइन मिला ।
कौशल मोदी

आउटपुट कैसा दिखता है?
टॉम हेल

1

डर्टीबिट का जवाब लेते हुए , मैं हाइलाइट किए गए खोज परिणामों का रंग बदलना चाहता था। इसे "स्टैंडआउट मोड" कहा जाता है, यहां एक उदाहरण फ़ाइल "xterm-yellow.ti" है:

xterm-yellow|yellow standout mode,
# exit standout mode
  rmso=\e[m,
# begin standout mode
  smso=\e[5;30;43m,
# similar terminal
  use=xterm,

फ़ाइल संकलित और स्थापित करें:

tic xterm-yellow.ti

"~ / .Profile" या समान करने के लिए लाइन जोड़ें:

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