Usando cores e formatação no Shell Script

Este artigo foi retirado do site Dicas-L http://www.dicas-l.com.br:

Colaboração: Angelo Roberto Bonfieti Junior

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 à atenção para algo importante.

Sendo assim, aqui vai uma dica para inserir cores em um script (ou texto):

Essa dica foi testada em 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 sequencia

echo "^[[33mTestando apenas^[[0m"

ira mostrar o texto Testando apenas em amarelo

Enquanto a sequencia:

echo "^[[31m^[[1mTestando apenas^[[0m"

ira 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, alem 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… 😉

Tabela de códigos:

CORES DE TEXTO

PRETO30
VERMELHO31
VERDE32
AMARELO33
AZUL34
MAGENTA35
CIANO36
BRANCO37

CORES DE FUNDO

PRETO40
VERMELHO41
VERDE42
AMARELO43
AZUL44
MAGENTA45
CIANO46
BRANCO47

MODOS ANSI

NORMAL0
NEGRITO1
BAIXA INTENSID2
ITALICO3
SUBLINHADO4
PISCANDO5
PISCA RAPIDO6
INVERSO7
INVISIVEL8

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 exibira:

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 dele direcionar a saida para outro arquivo, no entanto, funcionam perfeitamente.

Boa programação e boa diversão 🙂

Posted in Sem categoria

Longhorn rodar? aplica??es UNIX

A Microsoft est? incluindo seu Services for Unix (SFU) como um add-on integral do Windows Longhorn.
SFU ? atualmente um agregado gratuito que permite que aplica??es e scripts UNIX rodem na plataforma Windows.

Jason Zions, um arquiteto de solu??es da Microsoft, disse que h? vers?es do desenvolvimento do SFU que permitem um ?nico processo de funcionar o c?digo das bibliotecas de Windows e de Unix. Atualmente esta caracter?stica, que facilitaria as tarefas de integra??o, n?o est? dispon?vel no SFU. Zions disse: “n?s temos trabalhado em vers?es de pesquisa que resolveriam esse problema particular. N?o me surpreenderia ver que a potencialidade aparece em uma futura libera??o do Windows.”

Posted in Sem categoria