shell-script-pt
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]