De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Cores na tela com o comando tput

Colaboração: Julio Cezar Neves

Data de Publicação: 04 de setembro de 2018

Podemos colorir a tela usando sequências de escape impossíveis de memorizar seus conteúdos, ou então usando tput setaf para especificar a cor das letras (foreground) e tput setab para especificar a cor de fundo (background).

Os valores de setaf e setab variam de 0 a 7, e 9 é o valor que restaura as cores do fonte e/ou do fundo para seu(s) padrão(ões). Veja seus valores e cores correspondentes na tabela a seguir:

Símbolo Cor
0 Preto
1 Vermelho
2 Verde
3 Amarelo
4 Azul
5 Magenta
6 Ciano
7 Branco
9 Volta a cor default

A seguir tem um programa que você deveria executar para ver todas as possibilidades de combinação de cores de fonte e de fundo usando o comando tput (como já foi dito, existem outras formas, mas essa é a melhor).

$ cat cores1.sh
#!/bin/bash
for ((b=0; b<=7; b++))
{
    tput setab 9; tput setaf 9; echo -n "|"
    for ((f=0; f<=7; f++))
    {
        tput setab $b; tput setaf $f; echo -n " b=$b f=$f "
        tput setab 9; tput setaf 9; echo -n "|"
    }
    echo
}
tput setab 9; tput setaf 9

Os matizes das cores das fontes variam um pouco se a opção tput bold estiver ativa (normalmente a cor com ênfase é um tom mais claro). Execute o programa a seguir que você verá essas diferenças.

$ cat cores4.sh
#!/bin/bash
# cores4.sh - Lista as cores da console com bold
clear
for ((Cor=0; Cor <=7; Cor++))
{
    for Modo in sgr0 bold
    {
        tput $Modo
        tput setaf $Cor
        printf -v Linha "%-$(tput cols)s" "-Em-modo-$([ $Modo = sgr0 ] && echo Normal || echo "Bold ")-"
        sed "s/ /?/g" <<< "$Linha"
    }
    tput sgr0
}

Neste exemplo o printf foi usado para formatar a saída, preenchendo-a com espaços em branco até o tamanho da linha do terminal e jogando-a na variável $Linha (por causa da opção -v). O sed trocou os espaços em branco por este símbolo que preenche todo o espaço destinado a cada letra.

E executando-o aparecerá o seguinte:

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Julio Cezar Neves