매뉴얼 페이지의 색상


63

내 '콘솔'()이 아닌 맨 페이지를 xterm볼 때 약간의 색상이 표시되지만 내 xterm(예 :) 에서 이것을 얻지 못하면 이것을 konsole활성화 할 수있는 방법이 있습니까? 잘하면 상당히 간단한 해결책입니까?

답변:


78

termcap(5)기능 을 사용해야합니다 . 일부 Unices의 매뉴얼 페이지에 따르면이 도구는 더 이상 사용되지 않으며 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_* 참조하십시오 . 이것이 어떻게 작동하는지.

최종 결과

    ss of man page


7
이것이 작동하는 이유는 X11 물건이 밑줄을 지원하는 것처럼 '콘솔'이 '밑줄'을 색상으로 변환하기 때문입니다. echo -e "\e[04mhello world\e[0m"콘솔과 X11 터미널을 모두 입력 하고 차이점을 확인 하여이 이론을 테스트 할 수 있습니다 . 따라서 위의 핵은 termcap을 악용 하여 굵게 / 밑줄을 위해 방출 해야하는 코드에 대해 LESS에게 거짓말을하고 대신 색상 이스케이프 코드를 생성하도록합니다.
Kent Fredric

7
실제로 밑줄을 파란색으로 변환하는 것은 역사적인 PC 그래픽 어댑터 MDA 및 CGA의 텍스트 모드로 돌아가는 역사적인 이유가 있습니다 (실제로 CGA 텍스트 모드는 여전히 사용 가능합니다). 이러한 그래픽 어댑터는 문자 당 2 바이트를 저장했습니다. 하나는 ASCII 코드를 보유하고 다른 하나는 속성을 보유합니다. MDA는 속성 바이트를 밑줄, 밝음, 깜박임 및 역의 조합으로 해석 한 반면 CGA는 해당 바이트를 전경색 및 배경색으로 해석했습니다. 그리고 밑줄에 대한 MDA 속성은 검은 색의 파란색에 대한 CGA 속성과 같습니다.
celtschk

3
Konsole 또는 Gnome-terminal에서는 작동하지 않습니다. 나는 그것들을 설정했고, 커서와 상태 페이지에 대한 유일한 색상 변경입니다. 나는 내가 필요하다는 것이 밝혀졌다 export GROFF_NO_SGR=1.
CMCDragonkai

2
많은 하위 셸이 만들어졌습니다. 이 간단한 접근 방식 의 장점은 무엇입니까 ?
Tom Hale

1
@TomHale, 주로 크로스 시스템 / 터미널 호환성 (모호하지 않은 방식으로 스크립트를 다른 사람과 공유 할 수있는 기능). 다른 제어 코드를 사용하는 박스에서 작업하고 쉘 프로파일을 scp / rsync하면이 코드와 같이 제어 코드가 모두 하드 코딩 된 경우 대상에서 예상대로 작동하지 않을 수 있습니다. 기계 출력이 깨질 수 있습니다. 물론 스크립트가 하나 또는 두 개의 알려진 시스템 / 터미널 -emus에서만 실행된다면, 하드 코딩 된 접근 방식은 괜찮습니다.
Mark G.

15

예를 들어 다른 호출기를 사용하여이 문제를 해결할 수 있습니다 most. man실제로 PAGER환경 변수에 지정된 프로그램을 사용합니다 . 로부터 사람 (1) 매뉴얼 페이지

MANPAGER, PAGER

$ MANPAGER 또는 $ PAGER이 설정되면 ($ MANPAGER이 기본 설정에 사용됨), 값은 매뉴얼 페이지를 표시하는 데 사용되는 프로그램의 이름으로 사용됩니다. 기본적으로 pager -s가 사용됩니다.

값은 간단한 명령 이름이거나 인수가있는 명령 일 수 있으며 셸 인용 (백 슬래시, 작은 따옴표 또는 큰 따옴표)을 사용할 수 있습니다.

파이프를 사용하여 여러 명령을 연결할 수 없습니다. 필요한 경우 래퍼 스크립트를 사용하십시오.이 스크립트는 파일을 인수 또는 표준 입력으로 표시 할 수 있습니다.

most시스템에이 설치되어 있으면 다음을 시작하기 전에 시도하십시오 man.

export PAGER=most

2
most이것이 작동하려면 설치해야합니다.
enzotib

3
most이상한 키 바인딩이 있습니다 ... 구성 할 수 없습니다.
Mateen Ulhaq

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일부 터미널 에뮬레이터에서 작동 해야 합니다.
Ben

1
승리를 위해!! 나는 % 디스플레이 export MANPAGER='less -s -M +Gg'추가를 좋아 합니다.
MikeyE


3

'가장 많이'지속적으로 저장

터미널 열기 ( Ctrl+ Alt+ T)

  1. 'most'를 설치하십시오.

    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에서도 작동합니다.


nano를 열지 않으려면 터미널에서 bashrc를 추가하면됩니다 : sudo apt install most; echo "export PAGER = 'most'">> ~ / .bashrc; 소스 ~ / .bashrc에

1

http://nion.modprobe.de/blog/archives/569-colored-manpages.html 에서 가져온

발췌 :

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

이제 terminfo설명을 얻습니다 (다음을 mostlike.txt로 저장).

# 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(terminfo 항목 설명 컴파일러)를 사용하여 컴파일하십시오 .

$ tic mostlike.txt

( mostlike.txt컴파일 후에 파일 을 삭제하고 싶을 수도 있습니다 .)

그리고 *rc좋아하는 쉘 파일에 별칭을 정의 하십시오.

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

terminfo 파일을 수정하려면 infocmp mostlike나중에 내용을 가져 오는 데 사용 하십시오.


11
여기에 소스를 요약하면 도움이되므로 사람들은 클릭하지 않고도 (그리고 사이트가 다운 될 경우) 소스 코드를 볼 수 있습니다.
Michael Mrozek

3
답변 링크뿐만 아니라 답변을 제공하십시오. 그러나 답변을 지원하는 링크를 제공하는 것이 좋습니다. 이 질문에 대해 인터넷 검색을하고 있다고 상상해보십시오. StackExchange의 좋은 답변을 통해 첫 페이지 결과를 신속하게 찾을 수 있습니다.
Stefan Lasiewski

연결이 끊어졌습니다.
farzan

mostlike.txt온라인 에서 찾았습니다 .
Kaushal Modi

출력 결과는 어떻습니까?
Tom Hale

1

dirtybit의 답변받아 강조 표시된 검색 결과의 색상을 변경하고 싶었습니다. 이것을 "스탠드 아웃 모드"라고합니다. 다음은 "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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.