Piano Gripe 3 - Caracteres de controle
Este artigo nos apresenta ao Piano Gripe 3, um shell script criado por mim totalmente em bash e que usa muitos caracteres de controle. Quer aprender a colocar cores nos seus scripts? Mover o cursor do console e editar textos onde quiser da tela? Controlar os sons do beep do seu gabinete? Leia este artigo.
Piano gripe e shell script
Olá amigos!
Quando comecei a estudar shell script decidi fazer um programa completo, com manual, site e tudo. Vi que muito pouco se falava sobre caracteres de controle nas documentações de shell e resolvi fazer o meu programa de estudo, utilizando bastante caracteres de controle.
O nome do programa é Piano Gripe. Para acessá-lo, visite:
Aqui temos uma screenshot dele:
Quando comecei a estudar shell script decidi fazer um programa completo, com manual, site e tudo. Vi que muito pouco se falava sobre caracteres de controle nas documentações de shell e resolvi fazer o meu programa de estudo, utilizando bastante caracteres de controle.
O nome do programa é Piano Gripe. Para acessá-lo, visite:
Aqui temos uma screenshot dele:
Tudo isso é shell com caracteres de controle.
O código fonte do programa tem comentários ensinando a trabalhar com os caracteres. Aqui estou copiando e colando diretamente dos comentários do fonte.
Iniciando:
Caracteres de controle em shell script, possibilita muitas coisas. Vou descrever as 3 que mais gosto. Todo o texto está retirado de comentários;
######### CONSEGUINDO TIRAR SONS DO BEEP PELO COMANDO ECHO #################
#
# Para conseguir um som do speaker do seu computador, basta utilizar o
# caractere barra-letra \a (ALERTA). Se você digitar echo -ne '\a', vai
# ver que um beep soará. Basta agora você definir o tom e duração
# do beep. Para isso, use:
#
# echo -ne '\033[10;N1]\a' -> onde N1 é a freqüência. Quanto maior o
# valor da freqüência (Hz), mais agudo a nota
# sairá. Quanto menor for o valor, mais grave.
# echo -ne '\033[11;N1]\a' -> onde N1 é a duração do som.
# __________________________________________
# ---> O normal é \033[10;750] e \033[11;100] <---
#
# OBS1: Depois de brincar com o seu beep, não esqueça de voltar para os
# valores normais do beep.
#
# DICA: Defina a duração antes de definir o tom.
# ex: echo -ne '\033[11;500]\033[10;1000]\a'
# (Defina duração 500, defina tom 1000, toque um beep com \a)
#
# OBS2: Esse caractere de controle do beep, não toca um beep, ele apenas
# define o tom e duração. Quem toca o beep é o "\a", entre outras
# formas.
OBS: O piano é todo feito assim, os sons são tirados dessa forma. Eu sou
"músico" e tirei as freqüências verdadeiras de um instrumento musical. O mesmo
dó do piano, é o dó de qualquer instrumento.
##### APRENDENDO A MODIFICAR A POSIÇÃO DO CURSOR ############################
#
# 1) Sempre que você ver um "VAIPARA N1 N2", quer dizer que o cursor muda
# da linha atual, para a linha N1 e coluna N2. Exemplo: VAIPARA 1 1 ->
# Nesse caso o cursos vai para a linha 1 e coluna 1. Todo "echo" (ou o
# que seja) abaixo desse VAIPARA será inserido na linha 1, coluna 1.
# Aquele aviso inicial do programa, bem centralizado, pq está em uma das
# linhas centrais do monitor, e em uma das colunas centrais também.
# São 25 linhas e 80 colunas. Faça o teste, digite
# echo -e '\33[N1;N2Htexto aqui!' substituindo N1 pela linha e N2
# pela coluna. Existem outros caracteres de controle para indicar a
# direção do cursor, mas o H é o que eu mais gosto :)
function VAIPARA() { echo -ne "\033[$1;$2H" ;} #1
OBS: Foi muito útil ter construído essa função para fazer os gráficos do
programa. Utilize e faça relógios, barras de rolagem (espera), tudo.
##### APRENDENDO A COLORIR TEXTOS ##########################################
#
# Para colorir um texto usando o comando echo, veja a sintaxe:
# echo -e '\033[N1mTexto aqui!\033[m'
#
# Onde: N1 -> Código da cor ou propriedade.
# m -> indica que depois dele começa o texto
# \033[m -> no final do comando para que a cor volte ao normal,
# caso contrário, a cor será definida para os textos
# seguintes.
#
# Código de cores da letra -> vai de 30 a 37
# Código de cores do fundo -> vai de 40 a 47
# Código de propriedades -> 5 (pisca-pisca)
# 7 (cores invertidas)
# 1 (cor brilhante)
# 0 (sem cores)
#
# 1) Para usar um fundo azul com cor da letra vermelho e piscando?
# R: echo -e '\033[44;31;5mTexto aqui!\033[m'
#
# 2) Para usar somente a cor da letra vermelha?
# R: echo -ne '\033[31mTexto aqui!\033[m'
#
# Entendeu? Você vai misturando os números, separando-os com ";".
#
# DICA1: A propriedade 1 (cor brilhante), deve ser usado junto com a cor
# da letra. Em alguns casos, mudam a cor e em outros casos apenas
# deixa a cor da letra mais clara.
#
# DICA2: Teste os códigos das cores e monte uma tabela para consulta :D
# ou use o zzcores do funcoeszz (mão na roda para programadores
# Shell. Pegue em http://aurelio.net/zz)
OBS: Nem se fala nesse ponto. Todo o piano é colorido (até demais).
Bom, espero que todos visitem o site, escreva no livro de visitas, deixem seus comentários e digam no livro de visitas qual a sua distribuição e se funcionou bem.
Vou postar depois comentários de outros programas que tenho:
- Como fazer aplicações cliente servidor em shell script;
- Como usar CGI+Shell para aplicações WEB;
- Como fazer sites WAP para celular usando shell script;
- Manipular conteúdos direto da internet;
- Como acessar banco de dados;
- E muitos outros.
Até mais a todos!
[]'s
Pablo Fernandes
Eu rodei o programa no Kurumin 3.0, em modo texto, mas os sons não sairam, mesmo utilizando o root. Talvez seja meu pc-speaker que esteja desplugado. Alguem com o Kurumin conseguiu?
Valeu cara!