Inserindo cores no bash

Olá,

Nesse pequeno post apresentarei exemplos de como você poderá colorir os textos em terminais Linux, como o Bash. Primeiramente, devemos conhecer uma tabela de cores. Abaixo coloco essa tabela:

Atributos de Texto 
0 Todos os atributos desabilitados 
1 Negrito 
4 Sublinhado 
5 Brilho 
7 Video reverso 
8 Oculto 

Cores de Texto 
30 Preto 
31 Vermelho 
32 Verde 
33 Amarelo 
34 Azul 
35 Magenta 
36 Cyan 
37 Branco 

Cores de Fundo 
40 Preto 
41 Vermelho 
42 Verde 
43 Amarelo 
44 Azul 
45 Magenta 
46 Cyan 
47 Branco

A partir dessa tabela, podemos então partir para o código e colorir seu texto. Para colorir, você basicamente precisará da função printf() e passar alguns argumentos especiais. Um argumento especial que sempre deve conter para ativar as funcionalidades de cores no bash é “%c[“. A sintaxe é a seguinte:

printf("%c[%d;%d;%dm", 0x1B, Atributo, CorTexto, CorFundo);

Os parâmetros Atributos, CorTexto e CorFundo são valores variáveis e representam respectivamente um atributo, um valor de cor do texto e um valor de cor de fundo. Esses valores, estão na tabela acima apresentada.

Partindo para um exemplo onde o objetivo é colocar o texto ‘Hello World’ em negrito e nas cores amarelo (para texto) e preto (para fundo). Para isso, você pode fazer:

printf("%c[%d;%d;%dmHello World\n", 0x1B, 1, 33, 40);

Este comando acima, irá colorir o Hello World. No entanto, essa cores permanecerão ativadas nas próximas vezes que você for utilizar o printf(). Para desativar as configurações de cores e voltar ao normal, faça:

printf("%c[%dm", 0x1B, 0);

Note o parâmetro 0x1B. Ele está presente. Isto porque ele é o responsável por permitir inserir cores no bash e letra m no final, é o ponto que separa os parâmtros de cores e o texto útil a ser colorido.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s