[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] talvez seja uma pergunta absurda...
From: |
Hugo Cisneiros |
Subject: |
Re: [shell-script] talvez seja uma pergunta absurda... |
Date: |
Tue, 20 Jun 2000 05:05:26 -0300 |
On Tue, 20 Jun 2000, you wrote:
> Bom, agora ja dei uma impulsionada em voce, se eu conseguir encontrar a zine
> que ensina, eu te dou o endereco.
Ok, achei :)
http://members.xoom.com/nearz/
---------------
ÉÍÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÍ»
þÄÄ´ [0x01] <iNf> ANSI RuLeZ ÃÄÄÄÄÄÄþ GhostOBtRuDeR þÄ
ÈÍÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄͼ
Existem muitos programas pra voce fazer ansi, mas o que eh ansi?
ANSI -> American National Standards Institute, tipo nos soh vamos
falar das cores e animacoes, deixando de lado um recurso do ansi
que tem ha ver com teclado (que nunca testei em Linux, soh em DOS)
As sequencias ANSI sao identificadas pelo Kernel no Linux e pelo
ANSI.SYS no DOS (se voce nao consegue ver ansi no DOS tente colocar
uma linha "DEVICEHIGH=C:\DOS\ANSI.SYS" no seu \config.sys, isso
soh vai funcionar se voce tem o DOS, se voce soh tem o RwuIndowds95
arranje com alguem o ANSI.SYS); com os seguintes caracteres(em Hexa)
1B5B / (em Octal) 033 133 / (em decimal) 27 91 / quem em caracteres
seria ESC e "[" . Pra essas sequencias entrarem em acao devem
ser imprimidas na tela por qualquer funcao que grave em stdout ou
stderr, no DOS um programa que grave diretamente na tela nao ira
apresentar a sequencia isso vale tambem pra programas que usam
ncurses em Linux. Lembrando que as sequencias sao Case Sensitive
Vamos a um exemplo, em shell script
---> exemplo1.sh <--------------------------------------------------{-CUtHeRe
#!/bin/bash
echo -e "\\033[1;36mN\\033[0;36mear\033[0;1;36mZ\033[0m"
---> exemplo1.sh <--------------------------------------------------}-CUtHeRe
8-) Parece complicado a primeira vista, mas tudo que o exemplo1 faz eh
imprimir "NearZ" colorido, o "N" e o "Z" de azuis mais claros que o resto
das outras letras. Lembrando que se voce for usar ansi em shellscripts
voce pode usar o "echo -e \\033[..." (o "-e" serve pra identificar os
codigos em Octal \\xxx) ou o "printf \x1B[...", se voce for
usar em C "printf("%c[...",27);" e em perl "print "\033[..."
Agora a lista de cores: (usarei "^" pra representar \x1B ou \\033 etc...)
^[0m > Desliga a cor anterior
^[1m > Negrito
^[2m > Escuro
^[4m > Sublinhado (monitores mono)
^[5m > Piscante
^[7m > Reverso
^[30m > Preto
^[31m > Vermelho
^[32m > Verde
^[33m > Amarelo
^[34m > Azul
^[35m > Rosa
^[36m > Azul piscina
^[37m > Branco
^[40m > Fundo Preto
^[41m > Fundo Vermelho
^[42m > Fundo Verde
^[43m > Fundo Amarelo
^[44m > Fundo Azul
^[45m > Fundo Rosa
^[46m > Fundo Azul pscina
^[47m > Fundo Branco
Sao essas as cores, mas voce pode combina-las entre si, por exemplo
pra gerar um fundo verde com o texto em azul negrito voce deve
usar ^[42;1;34mFalaManow^[0m e nunca se esqueca de desligar as cores
depois de cada sequencia.
Animacoes
Agora a parte um pouco "complicada" do ANSI que sao as animacoes, que nada
mais eh que movimentar o cursor na tela...Vamos a um exemplo:
---> exemplo2.sh <--------------------------------------------------{-CUtHeRe
#!/bin/bash
for A in 1 2 3 4 5 6 7 8 :; do
for B in 1 2 3 4 5 6 7 8 9 0 :; do
echo -ne "\033[6D "
echo -ne "\033[1;36mN\033[0;36mear\033[0;1;36mZ\033[0m"; true ;
done ; done ; echo
---> exemplo2.sh <--------------------------------------------------}-CUtHeRe
O que o exemplo2 faz eh executar 80 vezes (8*10) a sequencia que volta
6 caracteres atraz e imprimi "NearZ" nas cores do exemplo1, o "true"
ali soh serve pra diminuir um pouco a velocidade da execucao, se o seu
processador for um MMX coloque uns 5 true's ja que eu testei aki no 486 :)
e ficou numa velocidade razoavel...Se entendeu ou nao aki vai a lista
de sequencias pra movimentar o cursor:
^[nA > Move o cursor n linhas para cima
^[nB > Move o cursor n linhas para baixo
^[nC > Move o cursor n colunas aa direita
^[nD > Move o cursor n colunas aa esquerda
^[n;mf > Move o cursor para a linha n e coluna m
^[s > Salva a posicao atual do cursor
^[u > Restaura a posicao do cursor salva com ^[s
^[2J > Limpa a tela e coloca o cursor em 0,0
^[K > Limpa ate o final da linha
Agora a criatividade eh que(m) manda, Vamos dar um exemplo mais complexo,
com 3 tipos de animacoes: 1a. kinem igual ao exemplo2 :) 2a. ao contrario
do exemplo2, o texto vem da direita pra esquerda. 3a. eh um efeito que
faz parecer que alguem esta digitando o texto (ps: Lembre-se de aumentar os
"true" caso sua makina nao seja um 486, hehe)
---> exemplo3.sh <--------------------------------------------------{-CUtHeRe
#!/bin/bash
echo -ne "\033[2J\033[0;0f"
echo;echo;echo
for A in 0 1 2 3 4 5 6 7 8 9 A B C D E F: ; do
echo -ne "\033[6D "
echo -ne "\033[1;36mN\033[0;36mear\033[0;1;36mZ\033[0m"; true ;
done
echo -ne "\033[60C"
for A in 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N: ; do
echo -ne "\033[10D "
echo -ne "\033[10D"
echo -ne "\033[1;32mE\033[0;32mdicao\033[0;1;32m06\033[0m"; true ;
done
true;true; echo -ne "\033[1m - "
true;true; echo -ne "\033[1mA\033[0m"
true;true; echo -ne "\033[36mN\033[0m"
true;true; echo -ne "\033[34mS\033[0m"
true;true; echo -ne "\033[2mI\033[0m "
true;true; echo -ne "\033[1mR\033[0m"
true;true; echo -ne "\033[1;31mu\033[0m"
true;true; echo -ne "\033[31mL\033[0m"
true;true; echo -ne "\033[1;31me\033[0m"
true;true; echo -ne "\033[1mZ\033[0m"
true;true; echo;echo;echo;echo
---> exemplo3.sh <--------------------------------------------------}-CUtHeRe
---------------
[]'s
Hugo