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.729 ]

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

Reconhecimento de Voz no Linux

Personalize seu shell na entrada de seu logon

Recursos avançados do bash que você não aprende na escola

Como trabalhar com funções em bash

Introduzindo prazerosamente aos poucos... o shell script

  
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