Comportamento diferente de tty's vs pty's

1

Se eu fizer man bash dentro de X, por exemplo, em xterm ou mate-terminal , receberei algumas palavras sublinhadas.

Se eu fizer man bash em um terminal virtual, recebo as mesmas palavras coloridas.

Posso obter a mesma coloração em X?

O que causa essa diferença nos comportamentos dos dois?

    
por PSkocik 26.08.2015 / 14:24

4 respostas

4

Se less estiver definido como um visualizador para man páginas, você terá a oportunidade de substituir cores padrão, com less de variáveis especiais.

Exemplo das minhas configurações:

export LESS_TERMCAP_mb=$'\e[6m'          # begin blinking
export LESS_TERMCAP_md=$'\e[34m'         # begin bold
export LESS_TERMCAP_us=$'\e[4;32m'       # begin underline
export LESS_TERMCAP_so=$'\e[1;33;41m'    # begin standout-mode - info box
export LESS_TERMCAP_me=$'\e[m'           # end mode
export LESS_TERMCAP_ue=$'\e[m'           # end underline
export LESS_TERMCAP_se=$'\e[m'           # end standout-mode

Além disso, você pode precisar definir

export GROFF_NO_SGR=''

devido a algum bug no "novo" comportamento groff .

Eu verifiquei na minha caixa de Linux que se eu definir no console

export LESS_TERMCAP_md=$'\e[4m'

então, em vez de sublinhar (o que não é possível no console), o código é de fato interpretado como azul claro.

    
por 27.08.2015 / 01:00
2

Esta questão fornece várias maneiras de despejar a página man. Eles também discutem que as páginas man seguem uma formatação especial - aquela que pode ser interpretada pelo emulador de terminal.

Basicamente, a página man é um documento groff , por isso contém caracteres engraçados que man interpreta como formatação.

Usar man em dois emuladores de terminal diferentes pode gerar resultados diferentes - exatamente o que aconteceu com você. Infelizmente, não há muito o que fazer sobre o seu comportamento - ele é limitado pelo seu emulador de terminal.

    
por 26.08.2015 / 14:29
1

A resposta é, na verdade, simples: modos de texto colorido EGA – VGA simplesmente falta da capacidade de sublinhar . Portanto, groff usa o substituto que julgar apropriado.

fbdev emulação, tecnicamente, não é limitado por restrições de VGA, mas (para fins de compatibilidade) depende do mesmo formato de buffer de tela com a mesma semântica.

Pode-se alterar o código do emulador de TUI framebuffer do Linux para reservar, digamos, algumas combinações de foreground / background para sublinhado. Mas isso resultará em:

  • problemas de compatibilidade;
  • inchaço do kernel;
  • precisa inventar uma nova chave terminfo $ TERM (diferente de linux ), porque os recursos do “novo console Linux” hipotético serão diferentes do clássico TERM = linux;
  • precisa garantir que os shells de login definam $ TERM de acordo.
por 12.09.2015 / 20:44
1

As outras respostas são interessantes, mas ninguém respondeu à pergunta do OP: faltando alguma customização específica, por que alguns terminais mostram comportamentos diferentes?

O console Linux tem muito tempo (desde o início dos anos 1990) cores exibidas para o atributos de vídeo interessantes que não suportam. @Incnis Mrsi mencionou isso (embora haja muitas fontes melhores).

  • No entanto, groff não sabe que há falta de capacidade de sublinhar. A descrição do terminal diz que sim; o que é legal, porque o groff ignora isso (ele usa escapes codificados). No entanto, o console do Linux renderiza isso como ele escolhe.
  • Os comentários sobre as variáveis de ambiente less são interessantes, mas não são usados com frequência.

Alguns outros terminais podem renderizar atributos de vídeo como cores; O xterm pode, configurando recursos colorUL e colorULMode (e Parece que muitas vezes as distribuições baseadas no Red Hat as configuram dessa maneira). Da mesma forma, o rxvt pode (também baseado em recursos, embora menos configurável).

    
por 11.10.2015 / 23:11

Tags