Cores nas páginas de manual


63

Quando olho para uma página de manual no meu 'console' (não um xterm), vejo alguma coloração, mas não entendo isso no meu xterm(por exemplo konsole). Existe alguma maneira de habilitar isso? espero que uma solução bastante simples?

Respostas:


78

Você precisa usar o termcap(5)recurso. A página de manual em alguns Unices diz que esta ferramenta é obsoleta e de uso terminfo, mas ainda está disponível em outras (e terminfoé mais complicada).

Mais importante, lessusa termcap.


Definir cores para less

Eu faço o seguinte para que lesse man(que usos less) tenha cor:

$ 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

E então no meu ~/.bashrc, eu faço isso:

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

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

NOTA: Consulte a documentação sobre LESS_TERMCAP_*variáveis? para como isso funciona.

O resultado final

    ss da página de manual


7
Eu acredito que a razão pela qual isso funciona da maneira que funciona é porque 'console' traduz 'sublinhado' em cores, onde o material X11 suporta sublinhados. Você pode testar essa teoria digitando echo -e "\e[04mhello world\e[0m"o console e o terminal X11 e vendo a diferença. Portanto, esse hack acima abusa do termcap para mentir para MENOS sobre quais códigos ele precisa emitir para negrito / sublinhado e o força a produzir códigos de escape de cores.
Kent Fredric

7
De fato, a tradução do sublinhado para o azul tem razões históricas, voltando aos modos de texto dos adaptadores gráficos para PC originais MDA e CGA (na verdade, os modos de texto CGA ainda estão disponíveis até o momento). Esses adaptadores gráficos armazenavam dois bytes por caractere: um contendo o código ASCII e outro com os atributos. O MDA interpretou o byte de atributo como combinações de sublinhado, brilhante, intermitente e inverso, enquanto o CGA interpretou esse byte como cor de primeiro plano e plano de fundo. E aconteceu que o atributo MDA para sublinhado era igual ao atributo CGA para azul no preto.
Celtschk

3
Isso não funciona no Konsole ou no Gnome-terminal. Eu os defino e a única alteração de cor é para o cursor e a página de status. Eu é que eu preciso: export GROFF_NO_SGR=1.
CMCDragonkai

2
São muitas sub-conchas criadas. Qual é a vantagem sobre essa abordagem mais simples ?
Tom Hale

1
@ TomHale, principalmente compatibilidade entre sistemas / terminais (e a capacidade de compartilhar o script com outras pessoas de uma maneira que não seja ambígua). Se você se encontrar trabalhando em uma caixa que usa códigos de controle diferentes, e você scp / rsync seu perfil de shell, quando os códigos de controle são todos codificados como no exemplo, eles podem não funcionar conforme o esperado no destino máquina, e você pode acabar com uma saída ilegível. Obviamente, se o script só for executado em uma ou duas máquinas conhecidas / terminal-emus, a abordagem codificada está bem.
Mark G.

15

Você pode resolver esse problema usando um pager diferente, por exemplo most. manrealmente usará o programa especificado na PAGERvariável de ambiente. Na página do manual man (1) :

MANPAGER, PAGER

Se $ MANPAGER ou $ PAGER estiver definido ($ MANPAGER é usado de preferência), seu valor será usado como o nome do programa usado para exibir a página do manual. Por padrão, o pager -s é usado.

O valor pode ser um nome de comando simples ou um comando com argumentos e pode usar aspas no shell (barras invertidas, aspas simples ou aspas duplas).

Pode não usar pipes para conectar vários comandos; se precisar, use um script de wrapper, que pode levar o arquivo a ser exibido como argumento ou na entrada padrão.

Se mostestiver instalado no seu sistema, tente isto antes de iniciar man:

export PAGER=most

2
mostdeve ser instalado, para que isso funcione.
enzotib 14/09/11

3
mostpossui teclas estranhas ... que não são configuráveis.
Mateen Ulhaq

10

Os sublinhados padrão machucam meus olhos. Essa configuração melhora muito a manleitura da minha página:

Exemplo de página de manual colorido

Adicione o seguinte no seu `~ .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

Para a vitória, combine com export MANPAGER='less -s -M +Gg' (origem) para exibir sua porcentagem no documento.


3
Como o @CMCDragonkai mencionou em um comentário em outra resposta, isso requer export GROFF_NO_SGR=1trabalho em alguns emuladores de terminal.
Ben

1
Para a vitória!! Adoro o% display export MANPAGER='less -s -M +Gg'adiciona.
MikeyE

5

Se você usar Oh My Zsh , poderá adicionar colored-man-pagesà pluginsmatriz no seu .zshrcarquivo.


3

Salvar 'a maioria' persistentemente

Terminal aberto ( Ctrl+ Alt+ T)

  1. Instale 'most'.

    sudo apt-get install most
    
  2. editar .bashrc, digite:

    nano ~/.bashrc
    
  3. Adicione estas linhas:

    # color man-pages persistently
    export PAGER='most'
    
  4. Salve 

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

  5. Atualizar

    source ~/.bashrc
    
  6. Teste

    man ln
    

Isso também funciona no xterm.


para evitar a abertura do nano, você pode anexar ao bashrc a partir do terminal: sudo apt install most; echo "export PAGER = 'most'" >> ~ / .bashrc; Fonte ~ / .bashrc
Será

1

Retirado de http://nion.modprobe.de/blog/archives/569-colored-manpages.html

Excerto:

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

Agora obtenha a terminfodescrição (salve o seguinte como 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, 

Agora compile-o usando tic(o compilador de descrição de entrada terminfo):

$ tic mostlike.txt

(Você pode excluir o mostlike.txtarquivo após a compilação.)

E então apenas defina um alias no *rcarquivo do seu shell favorito.

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

Se você deseja modificar o arquivo terminfo, use infocmp mostlikepara obter o conteúdo mais tarde.


11
Ajuda se você resumir a fonte aqui, para que as pessoas possam ver o que ela diz sem precisar clicar (e caso o site seja desativado)
Michael Mrozek

3
Forneça respostas, não apenas links para respostas. É muito bom fornecer links que suportem sua resposta, no entanto. Imagine que eu estava pesquisando no Google para esta pergunta - uma boa resposta no StackExchange encontrará rapidamente o caminho para a primeira página de resultados.
Stefan Lasiewski

O link está morto.
Farzan

Encontrei isso mostlike.txtonline.
Kaushal Modi

Como é a saída?
Tom Hale

1

Tomando a resposta de dirtybit , eu queria mudar a cor dos resultados de pesquisa destacados. Isso é chamado de "modo de destaque", aqui está um arquivo de exemplo "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,

Compile e instale o arquivo:

tic xterm-yellow.ti

Adicione linha a "~ / .profile" ou similar:

TERM=xterm-yellow
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.