Colorindo o Shell

Para aqueles que se cansaram daquela tela preta e branca do seus scripts, aqui vai uma solução para que a tela fique melhor apresentada e com um visual mais elegante.

[ Hits: 23.731 ]

Por: Carpegieri Torezani em 17/03/2012


Introdução



Neste artigo não será usada nenhuma ferramenta para a elaboração do script, só sendo necessário a utilização de comandos presentes no shell.

Este artigo poderá ser utilizado e modificado da maneira que se achar necessário, desde que mantenha os direitos autorais.

Para alterarmos o visual do shell, temos uma tabela de referência de códigos.

Cores de texto:
  • PRETO = 30
  • VERMELHO = 31
  • VERDE = 32
  • AMARELO = 33
  • AZUL = 34
  • MAGENTA = 35
  • CIANO = 36
  • BRANCO = 37

Cores de fundo:
  • PRETO = 40
  • VERMELHO = 41
  • VERDE = 42
  • AMARELO = 43
  • AZUL = 44
  • MAGENTA = 45
  • CIANO = 46
  • BRANCO = 47

Modo ANSI:
  • NORMAL = 0
  • NEGRITO = 1
  • BAIXA INTENSIDADE = 2
  • ITALICO = 3
  • SUBLINHADO = 4
  • PISCANDO = 5
  • PISCA RAPIDO = 6
  • INVERSO = 7
  • INVISIVEL = 8

Como funciona

Entendendo o funcionamento:

Para que o visual do shell seja diferente do que estamos acostumados nos nossos scripts, devemos personalizar as saídas do comando 'echo'. Seu funcionamento é semelhante ao código HTML.

Exemplo:

echo "\033[41;1;37m                                                                      \033[0m"


Com este código será gerada uma barra vermelha, caso houver algo escrito entre o "\033[41;1;37m" e a "\033[0m", seria mostrado em negrito e com a cor branca.

Onde:
  • "\033[ - é o início que indica como será formatado.
  • 41 - é a cor de fundo vermelha.
  • 1 - é negrito.
  • 37m - é a cor do texto branca
  • \033[0m" - finaliza a formatação.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Script pronto
Outros artigos deste autor

Balanceamento de links - Load balance + Failover + Failback

Leitura recomendada

Como matar um processo - kill, killall, pkill e xkill

Pipelines (Canalizadores)

Cansou do Konsole e GNOME-Terminal? Existem outros terminais, escolha o seu!

Wordpress em 30 segundos com WP-CLI

Criando um banner em flash no Linux

  
Comentários
[1] Comentário enviado por JJSantos em 17/03/2012 - 14:24h

Good.

[2] Comentário enviado por andfeh em 17/03/2012 - 14:25h

Faltou só o "-e" depois do echo para interpretar os "caracteres especiais" (escapes)!

ex:

echo -e " comandos com a \ aqui dentro "

Até mais,
André Carlim

[3] Comentário enviado por gieri em 17/03/2012 - 19:34h

Prezado andfeh, na minha distro e algumas que testei não precisa usar o "-e"...

Fiz o teste em Ubuntu e Linux Educacional e todas funcionaram perfeitamente...

Desde já obrigado pela dica...

Quem quiser baixar o Script acessar o link abaixo:
http://www.vivaolinux.com.br/script/Colorindo-o-Shell-Codigo-Puro

Quem quiser ver uma Screenshots de um sistema que desenvolvi olhar o link abaixo:
http://www.vivaolinux.com.br/screenshot/Gnome-Shell-script-com-menu/

[4] Comentário enviado por thvinicius em 19/03/2012 - 16:34h

Fiz aki no meu Ubuntu 10.10 e precisou do "-e", mas vlw agora vou "brincar" um pouquinho pra aprender mais

[5] Comentário enviado por thvinicius em 19/03/2012 - 17:02h

Ow estou com as seguintes duvidas tenho um script simples de agenda:
#!/bin/bash

echo "------------------------------------------------"
echo -e "{COMENTARIO}33[42;1;30m Digite o contato!!! (Digitar tudo em maiúsculo ) {COMENTARIO}33[0m"
read contato
echo "------------------------------------------------"
echo
echo "------------------------------------------------"
cat /home/thiago/telefones | grep $contato
echo "------------------------------------------------"
echo

ele busca o nome dentro do arquivos telefones, a dúvida é a seguinte como que faço para colocar cor e fundo na hora de ler o que vou digitar "read contato" e na hora de me mostrar a resposta "cat /home/thiago/telefones | grep $contato" e outra coisa não entendi direito o {COMENTARIO}33 ele é o tipo de letra, quais os outros valores que posso colocar? e m onde indica a cor do texto "030m", desde já agradeço!!!

[6] Comentário enviado por gieri em 20/03/2012 - 14:27h

Em relação a personalizar a Leitura "read" não conseguir alterar...

Em relação ao resultado conseguir um bom visual segue o script:

<<<<< Inicio >>>>>
#!/bin/bash
clear
echo "{COMENTARIO}33[41;1;37m Digite o contato!!! (Digitar tudo em maiúsculo ) {COMENTARIO}33[0m"
read contato
clear
cont=${#contato}

if [ $cont = 1 ]; then
spaco="-----------------------------"
else if [ $cont = 2 ]; then
spaco="----------------------------"
else if [ $cont = 3 ]; then
spaco="---------------------------"
else if [ $cont = 4 ]; then
spaco="--------------------------"
else if [ $cont = 5 ]; then
spaco="-------------------------"
else if [ $cont = 6 ]; then
spaco="------------------------"
else if [ $cont = 7 ]; then
spaco="-----------------------"
else if [ $cont = 8 ]; then
spaco="----------------------"
else if [ $cont = 9 ]; then
spaco="---------------------"
else if [ $cont = 10 ]; then
spaco="--------------------"
else if [ $cont = 11 ]; then
spaco="-------------------"
else if [ $cont = 12 ]; then
spaco="------------------"
else if [ $cont = 13 ]; then
spaco="-----------------"
else if [ $cont = 14 ]; then
spaco="----------------"
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
echo "{COMENTARIO}33[42;1;37m$spaco Resultado da Pesquisa para $contato $spaco{COMENTARIO}33[0m"
cat /home/thiago/telefones | grep $contato
echo "{COMENTARIO}33[42;1;37m$spaco- Final do Resultado da Pesquisa -$spaco{COMENTARIO}33[0m"
echo

<<<<< Fim >>>>>

Em relação a "{COMENTARIO}33" é a identificação de inicio e fim da personalização acredito que não tenha com alterar...

[7] Comentário enviado por thvinicius em 20/03/2012 - 14:52h

Certinho Kra, brigadão, vlw pela ajuda

[8] Comentário enviado por gieri em 20/03/2012 - 15:16h

Amigo pensando um pouco mais, você pode passar o valor para uma variável, tipo assim:

resultado=`cat /home/thiago/telefones | grep $contato`

Ai você pode personalizar a saida como quiser...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts