A “cor” no TERM sempre significa que posso usar cores?

4

O seguinte deve sempre indicar que eu posso usar seqüências de escape e tput para colorir coisas?

if [[ $TERM == *"color"* ]]; then
  true
else
  false
fi
    
por Captain Man 19.03.2016 / 17:14

1 resposta

4

Não: o nome da descrição do terminal é irrelevante. TERM é o nome de uma descrição do terminal. Existem muitos, e a maioria dos terminais que suportam cores não tem "cor" em seus nomes. Não há, por exemplo, nenhuma razão pela qual uma descrição de terminal não possa ser chamada de "sem cor".

Os programas que usam a descrição do terminal examinam os recursos listados nele. Existem, é claro, muitos programas codificados que assumem coisas sobre o nome de uma descrição de terminal.

De acordo com o FAQ ncurses Meu terminal não reconhece a cor , a descrição do terminal deve dizer quantas cores o terminal suporta, bem como definir as cores de primeiro e segundo plano.

Você pode usar tput para obter o número de cores:

colors=$(tput colors)
if [ $colors -gt 1 ]

desde que um recurso colors ausente faz tput return -1 .

    
por 19.03.2016 / 17:59