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.
Colaboração: Angelo Roberto Bonfieti Junior
Data de Publicação: 27 de Abril de 2024
Já se deparou com a necessidade (ou vontade) de destacar texto ou simplesmente fazer o output do seu script tornar-se visualmente chamativo ?
Normalmente programadores (especialmente em shell script) não adotam isso por gostarem do texto puro, da linha de comando. Telinha preta 🖥
Todavia, se você é daqueles que acredita que seus scripts podem ficar melhores com alguma "cosmética", acredite, eles ficam mesmo. Pelo menos visualmente.
Inserir cores e diferenciar texto pode ser interessante quando você quiser destacar um erro, evidenciar diferenças ou, simplesmente, chamar a atenção para algo importante.
Sendo assim, aqui vai uma dica para inserir cores em um script (ou texto):
Essa dica foi testada no editor vi
e funciona legal em terminais que
suportam o formato ANSI. Basta que você adicione uma certa sequência ao
comando echo para alcançar seu objetivo.
A sintaxe genérica é:
echo "^[[#m"
Onde:
^[
é um caracter especial produzido pressionando Crtl-v
e, em seguida, Esc
;
O hash (#
) é substituído por um número, dependendo do tipo de efeito
que voce pretende adicionar ao seu texto;
O segundo [
e a letra m
são caracteres normais;
Sendo assim, a sequência
echo "^[[33mTestando apenas^[[0m"
exibirá o texto Testando apenas
em amarelo
Enquanto a sequência:
echo "^[[31m^[[1mTestando apenas^[[0m"
mostrará o texto Testando apenas
em vermelho e negrito (um vermelho um
pouco mais forte)
Para imprimir o resultado de uma variável, basta definí-la corretamente
e não permitir que o comando echo
a interprete. Assim, segue um exemplo
de como imprimir a variável TESTE
com fundo azul, texto vermelho, negrito
e sublinhado:
TESTE="Testing Only" echo "^[[4m^[[1m^[[44m^[[31m${TESTE}^[[0m"
Neste exemplo, além de formatar o texto, também delimitei o início e fim do
nome da variável com {}
- isso para evitar qualquer erro de interpretação
pelo echo
e pelos caracteres especiais.
Note que eu sempre termino com a sequencia ^[[0m
. Esse é o código
passado ao echo
que irá retornar seu cursor ao estado "normal", ou seja,
como estava previamente (sem cores).
Abaixo anexo uma pequena tabela C de várias cores e formatos. Existem mais códigos, mas esse são os que eu mais utilizo. Sugiro que, se houver tempo e disposição, você descubra as outras combinações e possibilidades... ;)
PRETO | 30 |
VERMELHO | 31 |
VERDE | 32 |
AMARELO | 33 |
AZUL | 34 |
MAGENTA | 35 |
CIANO | 36 |
BRANCO | 37 |
PRETO | 40 |
VERMELHO | 41 |
VERDE | 42 |
AMARELO | 43 |
AZUL | 44 |
MAGENTA | 45 |
CIANO | 46 |
BRANCO | 47 |
NORMAL | 0 |
NEGRITO | 1 |
BAIXA INTENSID | 2 |
ITALICO | 3 |
SUBLINHADO | 4 |
PISCANDO | 5 |
PISCA RAPIDO | 6 |
INVERSO | 7 |
INVISIVEL | 8 |
Note que alguns comandos nativos do Unix, como cat
e pg
, por exemplo,
já mostram o resultado formatado, ou seja, colorido. Outros comandos, como
more
irão mostrar o código completo. O interessante, aqui, é notar
que no último exemplo (com variável), o cat
naquele script exibirá:
TESTE="Testing Only" echo "${TESTE}"
Onde o texto ${TESTE}
já será mostrado colorido.
Mas note também que um simples (e famoso) Crtl-c
dessa sequência, seguido
de Ctrl-v
no vi
não irá funcionar. Isso porque os caracteres ^[
são
especiais e não um texto puro. Assim, é necessário que eles sejam "passados"
para o vi
como tal... copiar o arquivo, ou fazer um cat
direcionando a
saida para outro arquivo, no entanto, funcionam perfeitamente.
Boa programação e boa diversão :)
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários