Bem bolado e muito legal também ...
pelas variaveis que tem nele, é um ótimo script de exemplo de case, while,
tput
parabens
On 5/9/07, Valtoir S. Jardim <address@hidden> wrote:
Olá, pessoal.
Sou cadastrado na lista há bastante tempo, mas não costumo participar e,
para falar a verdade, sequer tenho tido tempo de ler as mensagens. Mas
no
final de semana passado resolvi terminar um pseudo screensaver em bash,
que já tinha começado e não dava jeito de terminar. Na verdade já tenho
uma outra versão do mesmo script, completamente reescrita e que achei
bem
melhor (e menor também), mas tenho que revisar uns detalhes. Quando
estiver ok, publico para saber a opinião de vocês.
Como podem ver, substituí os caracteres em branco da identação por "~".
Nada que um "sed -i 's/~/ /g' pes.sh" não resolva. Segue o script :
--------- pes.sh -----------------
#!/bin/bash
# autor: Valtoir dos Santos Jardim
# e-mail: valtoirjardim at gmail dot com
# blog: valtoir.blogspot.com
# data: 2007-05-05
# versao: 0.1
trap "clear; setterm -reset; exit" 2
colors=(31 32 33 34 35 36 37)
signal=( + - )
while getopts "hc:" opt; do
~~~case $opt in
~~~~~~h) echo -e "\nUso: pes.sh -h | -c <caractere>"
~~~~~~~~~echo -e "\nParametros:"
~~~~~~~~~echo -e " -h: Mostra essa (grande) ajuda"
~~~~~~~~~echo -e " -c <caractere>: Limpa a tela e define caractere de
preenchimento"
~~~~~~~~~echo -e "\nExemplo:"
~~~~~~~~~echo -e " pes.sh -c#\n"
~~~~~~~~~exit;;
~~~~~~c) clear;
~~~~~~~~~for i in $(seq 0 `tput lines`); do
~~~~~~~~~~~~for w in $(seq 1 `tput cols`); do
~~~~~~~~~~~~~~~~echo -e "$OPTARG\c"
~~~~~~~~~~~~done;
~~~~~~~~~~~~tput cup $i;
~~~~~~~~~done;;
~~~~~~?) exit -1;
~~~esac
done
setterm -cursor off -bold on
while :; do
~~~moreorless=$((RANDOM%2))
~~~color=${colors[$(($RANDOM%${#colors[*]}))]}
~~~delay=.$(((RANDOM%8)+4))
~~~left_foot=$(($RANDOM%$((`tput cols` - 13))))
~~~right_foot=$(($left_foot + 8))
~~~lines=$(($(tput lines) - 5))
~~~[ "$moreorless" == "1" ] && {
~~~~~~tput cup $((lines + 5)) $left_foot
~~~~~~echo -e "\e[$color;1m.oooO\c\e[m"
~~~}
~~~for line in `seq $((($lines ${signal[$moreorless]} 1))) -10 5`; do
~~~~~~sleep $delay
~~~~~~tput cup $((line++)) $right_foot
~~~~~~echo -e "\e[$color;1mOooo.\e[m"
~~~~~~tput cup $((line++)) $right_foot
~~~~~~echo -e "\e[$color;1m( )\e[m"
~~~~~~tput cup $((line++)) $((right_foot + 1))
~~~~~~echo -e "\e[$color;1m) /\e[m"
~~~~~~tput cup $((line++)) $right_foot
~~~~~~echo -e "\e[$color;1m(_/\c\e[m"
~~~~~~sleep $delay
~~~~~~tput cup $((line - 9)) $left_foot
~~~~~~echo -e "\e[$color;1m.oooO\e[m"
~~~~~~tput cup $((line - 8)) $left_foot
~~~~~~echo -e "\e[$color;1m( )\e[m"
~~~~~~tput cup $((line - 7)) $((left_foot + 1))
~~~~~~echo -e "\e[$color;1m\ (\e[m"
~~~~~~tput cup $((line - 6)) $((left_foot + 2))
~~~~~~echo -e "\e[$color;1m\_)\e[m"
~~~done
~~~sleep $delay
~~~[ $((line -14)) -lt 0 ] || {
~~~~~~tput cup $((line - 14)) $right_foot
~~~~~~echo -e "\e[$color;1mOooo.\e[m"
~~~}
~~~[ $((line -13)) -lt 0 ] || {
~~~~~~tput cup $((line - 13)) $right_foot
~~~~~~echo -e "\e[$color;1m( )\e[m"
~~~}
~~~[ $((line -12)) -lt 0 ] || {
~~~~~~tput cup $((line - 12)) $((right_foot + 1))
~~~~~~echo -e "\e[$color;1m) /\e[m"
~~~}
~~~[ $((line -11)) -lt 0 ] || {
~~~~~~tput cup $((line - 11)) $right_foot
~~~~~~echo -e "\e[$color;1m(_/\e[m"
~~~}
~~~sleep $delay
~~~[ $((line -18)) -lt 0 ] || {
~~~~~~tput cup $((line - 18)) $left_foot
~~~~~~echo -e "\e[$color;1m( )\e[m"
~~~}
~~~[ $((line -17)) -lt 0 ] || {
~~~~~~tput cup $((line - 17)) $((left_foot + 1))
~~~~~~echo -e "\e[$color;1m\ (\e[m"
~~~}
~~~[ $((line -16)) -lt 0 ] || {
~~~~~~tput cup $((line - 16)) $((left_foot + 2))
~~~~~~echo -e "\e[$color;1m\_)\e[m"
~~~}
done
T+
Valtoir
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação,
como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem
prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil
Links do Yahoo! Grupos
--
:wq!
Júlio César Mauro
------------------------------------------------
HWC #2776
Skype: juliocesarmauro
MSN: address@hidden
LPI #: LPI000103014
GNU/Linux User # 114287
------------------------------------------------
"Porque eu, o Senhor teu Deus, te tomo pela tua mão direita, e te digo:
Não
temas, que eu te ajudo"
Isaías 41:13
[As partes desta mensagem que não continham texto foram removidas]