Linux slogan
Visite também: BR-Linux.org · Dicas-L · NoticiasLinux · SoftwareLivre.org · UnderLinux · BestLinux
» Screenshot
Linux: SuSE Aqua
Por geekzen



» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha

» Wallpaper
Linux: FyreLinux
Por rrafael


Artigo

Formatando o bash com cores e efeitos
Linux user
hiram
29/12/2004
Aprenda a dar um brilho e colorido especial a seus scripts, console e códigos-fonte utilizando recursos do bash, que por sinal ainda são pouco documentados pelo que pude constatar. O artigo foca usuários que estão ainda começando a lhe dar bem com o poderoso bash e desejam utilizar destes recursos tão legais e que podem ser bem úteis às vezes.
Por: Hiram Castelo Branco
[ Hits: 23034 ]
Conceito: 10.0   4 voto(s)4 voto(s)4 voto(s)4 voto(s)4 voto(s) + quero dar nota ao artigo

Formatando os bash scripts

Inicio com uma pergunta: Você sabe realmente o que é Bash?

Bash (Bourne-Again SHell)


Resumidamente, um shell, que nada mais é do que um interpretador de comandos usualmente encontrado em sistemas operacionais como Linux, FreeBSD e outros unix-like. O Bash é atualmente o shell mais utilizado pela combinação de praticidade e riqueza de recursos. Este, incorpora "legados" do ksh (Korn SHell) e csh (C SHell), segue vários padrões, o que facilita no quesito compatibilidade e finalmente tem grande poder de programação e interatividade com o usuário.

Particularmente recomendaria aos usuários que não têm a mínima noção de "Bash Script" darem uma olhada no artigo seguinte antes de prosseguir:
Vamos ao que interessa e analisar os exemplos abaixo:

#!/bin/bash
#Texto normal

echo "Viva o Linux!"

# O argumento "-e" é fundamental para ativar a interpretação de caracteres # precedidos pela barra "\". Caso contrário você não verá o efeito real e sim
# o texto exatamente da forma em que está escrito entre as aspas.

#Texto colorido

echo -e "Viva o \033[01;32mLinux\033[01;37m!"

Observem no exemplo os trechos em negrito e reparem que são eles um dos temas do nosso artigo. Tentarei explicar o que vemos:
  • "\033": ainda não consegui encontrar o real motivo de usar isto, mas é obrigatório para usar as cores, se trocar por outra coisa dará tudo errado;
  • "01"( estilo): significa que nosso texto será em negrito (bold);
  • "32m" (cor do texto): 32 representa a cor vermelha e o "m" indica o fim da expressão e após ele você já poderá incluir o texto que bem desejar;

Meio complicado ainda né!? Mas vai abaixo os dados que certamente irão ajudar a se organizar:

Estilos


00: Nenhum
01: Negrito
04: Sublinhado
05: Piscante
07: Reverso
08: Oculto

Cores de texto


30: Preto
31: Vermelho
32: Verde
33: Amarelo
34: Azul
35: Magenta (Rosa)
36: Ciano (Azul Ciano)
37: Branco

Cores de fundo


40: Preto
41: Vermelho
42: Verde
43: Amarelo
44: Azul
45: Magenta (Rosa)
46: Ciano (Azul Ciano)
47: Branco


OBS: Os "estilos" obviamente tem efeito somente no texto e de forma alguma na cor de fundo.

Agora ficou fácil né!? Basta agora treinar um pouco para acostumar a usar...

E ainda pra facilitar vai abaixo alguns exemplos interessantes:

#!/bin/bash

#Google com fundo branco! =)

echo -e '\033[01;34;47mG\033[01;31mo\033[01;33mo\033[01;34mg\033[01;32ml \033[01;31me\033[00;37;40m'

#Matrix verde CGA =)!
echo -e '\033[01;32mmAtTiX\033[00;37m'

#Erro fatal vermelho e piscante pra impressionar!!!
echo -e '\033[05;31mERRO FATAL\033[00;37m'

#Viva o Linux
echo -e '\033[01;37mViva o \033[04;32mLinux\033[00;37m!!!'
Próxima página >>


Páginas do artigo
   1. Formatando os bash scripts
   2. Formatando as "prompt strings" do bash
   3. Aplicando o que aprendemos na linguagem C

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por removido em 29/12/2004 - 02:19h:

OPa!,

Pooowwwwwww show de bola ....

já dei um ADD aqui nos meus favoritos do VOL demorooo


--
Abs,
guinet gmail com

[2] Comentário enviado por lowpis em 29/12/2004 - 03:07h:

alguns acrescimos:

- vc pode usar \E ao inves de {COMENTARIO}33 (acho melhor por mais claro)

- use "tput sgr0" para restaurar as configuracoes originais. nem sempre o default do bash eh preto com letras brancas, antao nao eh bom fazer {COMENTARIO}33[00;37m no final do script para voltar.o ideal era fazer isso:

echo -e '\E[01;37mViva o \E[04;32mLinux!!!'; tput sgr0

[3] Comentário enviado por lowpis em 29/12/2004 - 03:08h:

ps. no comentario acima, eu escrevi "barra 033" mas o site trocou por COMENTARIO :-P

[4] Comentário enviado por hiram em 29/12/2004 - 03:21h:

valeu pela dica lowpis...!!!

[5] Comentário enviado por fabio em 29/12/2004 - 03:26h:

Lowpis, o Hiram também teve esse mesmo problema. Veja só, o código \0 é interpretado pelo PHP como sendo a última expressão regular procurada, então a classe FastTemplate, usada no VOL, substitui o \0 por COMENTARIO nesse caso.

O que tive de fazer é usar a representação hexadecimal do "\" no HTML pra isso funcionar: \

Com relação ao comando tput, uma alternativa é digitar somente: reset

[]'s

[6] Comentário enviado por oplagiadorretona em 29/12/2004 - 10:39h:

Cara vc parece um sapaum!!!!como vc não consegiu quebrar a camera com tanta fiura!!!!!

[7] Comentário enviado por c3s4rbs em 29/12/2004 - 14:51h:

Excelente artigo!!! Foi pros meus faves =)

[8] Comentário enviado por hiram em 29/12/2004 - 15:21h:

Lowpis, realmente usar o tput é mais jogo pelo fato de que ele não 'limpa' a tela entao em alguns casos usaria ele sim...

oplagiadorretona, isso num sô eu não rapaiz ... eh um amigo meu aki de bh com essa Lingua artificial lah... se eu fosse dakele jeito ali eu pidia pra nascer de novo (killall -9 me)!

[9] Comentário enviado por c3s4rbs em 30/12/2004 - 01:35h:

só não entendo uma coisa... depois de mudar meu PS1, quando eu digito um comando longo no bash, ao inves de pular de linha, o cursor vai lá pro incio da lina e escreve tudo por cima... e nem vai até o final da tela do xterm,isso acontece no meio do "espaço" que sobra pra digitar comandos...

[10] Comentário enviado por hiram em 30/12/2004 - 01:57h:

é isso acontece mesmo... vou tentar descobrir sobre e posto algo que eu axar aki!


[11] Comentário enviado por flipe em 30/12/2004 - 09:27h:

exatamente, eu ja faço isso a algum tempo, e tinha o mesmo brema... o problema está no código d formatação, no meu estava sempre no "\n"..

no caso ai não sei, um exemplo com o meu código...

"export PS1='\033[47;30m\t[\033[31mflipe em hyperlinux pt com pt br\033[30m]&#92033[0m\n&#92033[01;32m [\w] \033[01;34m--> \033[01;33m[\u#\H]\033[0m\033[01;33m\033[31m\033[33m\n'"

se eu colocar mais um "\n" ai da essi brema.... ou se u terminal fica muitu aberto sem realizar nenhuma função!!

falou!!

[12] Comentário enviado por hiram em 11/01/2005 - 15:23h:

Flipe, ahaha! Cabuloseira total seu PS1 hein... daora!!!

[13] Comentário enviado por malmeida em 14/02/2005 - 19:46h:

"{COMENTARIO}33" em caractere octal, ou simplesmente "\E" configuram a tecla "esc" (em ASCII). Creio que seja uma espécie de "reset" antes de alterarmos os atributos. Testem a expressão "{COMENTARIO}33[m" ou "\E[m" no final do script e as configurações originais do prompt estarão de volta.

[14] Comentário enviado por claudio_65 em 16/03/2005 - 12:22h:

Boa tarde.

Há cerca de um ano eu comecei a freqüentar este Site e estava entusiasmado com o Linux. Ocorre que há uns seis meses eu tive um problema de saúde e só agora estou retornando à vida normal. Nos últimos acessos que fiz a este Site eu vi um script (não sei se é este o termo correto, pois sou iniciante em Linux) e me interessei pela forma aparentemente simples de se programar. Assim sendo, pergunto:

Alguém pode me indicar onde me informar sobre os comandos, variáveis, etc pára se criar um script?

Antecipadamente agradecido,

Atenciosamente,

Cláudio Baptista.

[15] Comentário enviado por tecnet em 01/06/2005 - 19:03h:

Pessoal,

echo -n "Informe la hora deseada (01-24): "
read hora

Como faco para trocar a cor somente do (01-24): sendo que esta como echo -n

Obrigado!


[16] Comentário enviado por texugo89 em 19/01/2006 - 19:30h:

Bom Artigo, principalmente a parte da Liguagem C!!!

Caro amigo tecnet, eu sei que já faz um tempo que vc perguntou, mas tá ai a resposta com -ne:

echo -ne 'Informe la hora deseada {COMENTARIO}33[31;1m(01-24){COMENTARIO}33[m: ';
read hora

Obs.:Essa resposta tem como exemplo na primeira parte desse Artigo.

Bom sem o -e eu não tenho certeza se é possivel!


Flw!!!

[17] Comentário enviado por nissieloin em 02/08/2006 - 16:43h:

Achei bem legal. Ajuda muito a preparar sistema para iniciantes... principalmente servidores


[18] Comentário enviado por gabrielbiga em 30/11/2006 - 16:45h:

Muito Bom.

[19] Comentário enviado por emtudo em 12/03/2007 - 14:56h:

eu nao sei como faz, mas poderia ser feito uma forma de tb mudar a cor das letras digitadas com "read variavel"

tipo para ser usado em contra senhas...

[20] Comentário enviado por claytonbh em 27/02/2009 - 11:36h:

Caros, por que o efeito piscante nao funciona quando logo via ssh?


Contribuir com comentário
  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Copyleft 2002-2009 Viva o Linux.com.br

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.