Imprimir cores do console

3

Escrevi uma função bash para exibir as cores do console.

Mas, parece que algumas das cores não são possíveis de mostrar assim! (?)

Além disso, observe o estranho "preto brilhante"!

(Nota: O screendump abaixo é do xterm, mas isso deve ser usado no modo de console. Eu tive que usar o xterm para obter um screendump. Mas ele parece o mesmo.)

clr http://user.it.uu.se/~embe8573/clr.png

function clr () {
  Color_names="bla red gre yel blu mag cya whi"
  Color_arr=($Color_names)
  for m in {0..15}
  do
    tput setaf $m
    echo -n ${Color_arr[$((m % 8))]}" "
  done
  echo
  tput sgr0
  cat /sys/module/vt/parameters/default_red \
      /sys/module/vt/parameters/default_grn \
      /sys/module/vt/parameters/default_blu | tr "," "\t"
}
    
por Emanuel Berg 24.08.2012 / 04:24

3 respostas

6

Se você verificar tput colors , provavelmente verá que a resposta é 8. A maneira de mostrar as cores brilhantes é por tput bold .

Isso mostra todas as combinações 8x8x2 de primeiro plano e plano de fundo, normal e negrito.

for cmd in sgr0 bold; do
  tput $cmd
  for i in $(seq 0 7); do
    for j in $(seq 0 7); do
      tput setaf $i; tput setab $j; echo -n " $i,$j "
    done
    tput sgr0; echo; tput $cmd
  done
done
    
por 24.08.2012 / 10:36
0

Veja esta postagem do blog: link

Editar: se você tiver apenas 8 resultados de cor de tput-color , você pode usar ncurses para resolver sua fraqueza! no ubuntu, instale-o:

sudo apt-get install ncurses-term

e adicione a seguinte linha em seu ~ / .bashrc ou ~ / bash_profile:

export TERM=xterm-256color

e em vez do seu script você pode usar o comando emacs para ver suas cores. execute o emacs no terminal com emacs -nw e digite o comando M-x list-colors-display

não importa o terminal de bruxa que você tenha, essa ferramenta funcionará em todos os seus emuladores de terminal; -)

    
por 24.08.2012 / 11:50
0

Existem várias descrições de terminal que podem ser usadas para o console do Linux. O mais comumente usado, claro, é definido com TERM=linux .

Como alternativa, há TERM=linux-16color , que faz o combinações de negrito / cor que você pode ver na resposta do @angus.

A comparação de linux e linux-16color com infocmp mostra isso:

comparing linux to linux-16color.
    comparing booleans.
    comparing numbers.
        colors: 8, 16.
        ncv: 18, 63.
        pairs: 64, 256.
    comparing strings.
        setab: '\E[4%p1%dm', '\E[4%p1%{8}%m%d%?%p1%{7}%>%t;5%e;25%;m'.
        setaf: '\E[3%p1%dm', '\E[3%p1%{8}%m%d%?%p1%{7}%>%t;1%e;21%;m'.

As partes %t;5 e %t;1 usam os atributos pestanejar e negrito (um recurso do hardware de exibição) para obter cores brilhantes de segundo plano e de primeiro plano, dependendo do valor fornecido a tput setab e tput setaf . / p>

Aqui está uma captura de tela feita usando o programa de teste ncurses com linux-16color :

    
por 05.11.2016 / 03:22