|
From: | Julio C. Neves |
Subject: | Re: [shell-script] Um animação em ascii |
Date: | Fri, 23 Dec 2016 12:55:51 -0200 |
Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Dá-lhe Julio. Todo natal esperamos o update neste script! =)Coloquei num pastebin pra facilitar: http://pastebin.com/vZnKL5Tq Grande abraço.2016-12-23 11:07 GMT-02:00 'Julio C. Neves' address@hidden [shell-script] <address@hidden.br >:Senhores, fiz este script já há alguns anos e acho que em todo Natal ele renasce.Eu sei que deveria colocá-lo em um site, mas não tenho saco, nem tempo, mas se algum de vcs quiser colocá-lo num site, sem problema algum.Se quiser personalizá-lo para mandar para algum amigo, substitua no o valor da variável NomeIni (linha 22) onde está a cadeia "Aos\ Amigos\ da Lista\ Shell" por "Nome Sobrenome" ou "Nome Apelido" do seu amigo (repare que só deixo o Shell "ver" um espaços, os outros estão com contrabarras).Feliz Natal a todos#!/bin/bash# Versão 2.0# Isso foi feito para mostrar que em shell se# pode fazer de tudo, inclusive na tela.## Autor: Julio Neves#trap "tput reset; tput cnorm; exit" 2function MontaArr{# Monta um array Arr[$Lin$Col] (ambas com zeros à esqueda)#+ com o caracteres que está naquela posiçãolocal ilocal lfor ((i=0; i<${#3}; i++)){l="${3:i:1}"Arr[$(printf "$1%02i" $[$2+$i])]="$l:$4"}}NomeIni=(Aos\ Amigos\ da Lista\ Shell) # Troque $NomeIni para enviar a amigos, mas#+ sempre pelo menos 1 e no máximo 2 nomes ;)Ano=$(($(date +%m) < 10 ? $(date +%Y) : $(date +%Y) + 1))# Preparando nome para escrever no canto inferior direito da telafor ((Pos=0; ;Pos++)){s0=${NomeIni[0]:$Pos:1}s0=${s0:- }s1=${NomeIni[1]:$Pos:1}s1=${s1:- }[[ $s0 == ' ' && $s1 == ' ' ]] && breakNome="$Nome$s0 $s1"}# Montando a ÁrvoreColLogo=$[$(tput cols)-4]LinLogo=$[$(tput lines)-$Pos-1]LogoTrab=0tput civislin=2col=$(($(tput cols) / 2))ccnev=$[col - 13]c=$((col-1))est=$((c-2))cor=0tput setab 0; cleartput setaf 2; tput boldfor ((i=1; i<20; i+=2)){tput cup $lin $colfor ((j=1; j<=i; j++)){echo -n \*MontaArr $lin $[col+j] \* 2}let lin++let col--}tput sgr0; tput setab 0; tput setaf 3; tput boldfor ((i=1; i<=2; i++)){MontaArr $lin $[c+1] mWm 3tput cup $((lin++)) $cecho mWm}tput setab 0; tput setaf 7; tput boldtput cup $lin $((c - 4)); echo BOAS FESTASMontaArr $lin $[c-3] "BOAS FESTAS" 7tput cup $((lin + 1)) $((c - 11)); echo E muito suSHELLso em $AnoMontaArr $((lin + 1)) $((c - 10)) "E muito suSHELLso em $Ano" 7# tput cup $((lin + 3)) $UltCol; echo $UltLinlet c++k=1# Pendurando as bolas (da árvore, claro!)while truedofor ((i=1; i<=35; i++)){# Apagando a bola que foi ligada há 35 rodadas atras[ $k -gt 1 ] && {tput setab 0; tput setaf 2; tput boldtput cup ${linha[$[k-1]$i]} ${coluna[$[k-1]$i]}; echo \*MontaArr ${linha[$[k-1]$i]} ${coluna[$[k-1]$i]} \* 2unset linha[$[k-1]$i]; unset coluna[$[k-1]$i] # Mantenha limpo o vetor}li=$((RANDOM % 9 + 3))ini=$((c-li+2))fim=$((c+li+2))co=$((RANDOM % (li-2) * 2 + 1 + ini))tput setab 0; tput setaf $cor; tput bold # Troca cor das bolastput cup $li $coecho olinha[$k$i]=$licoluna[$k$i]=$coMontaArr $li $co o $corsh=1for l in S H E L Ldotput cup $((lin+1)) $((c-3+sh))echo $llet sh++done# Olha a nevefor ((n=0; n<15; n++)){[ "${nev[n]}" ] || {nev[n]=$[RANDOM % 12 + 1]$(printf "%02i" $[RANDOM % 25 + ccnev])}lnev=$[nev[n] / 100]cnev=$[nev[n] % 100]idx=$lnev$(printf "%02i" $cnev)Antigo=${Arr[10#$idx-100]%:*}Antigo=${Antigo:-' '}CorAnt=${Arr[10#$idx-100]#*:}CorAnt=${CorAnt:-0}tput setab 0tput setaf $CorAnttput cup $[lnev-1] $[cnev-1]echo "$Antigo"tput setab 0; tput setaf 7; tput cup $lnev $[cnev-1]; echo .let lnev++nev[n]=$lnev$(printf "%02i" $cnev)[ $lnev -gt 16 ] && {tput setab 0; tput setaf 7; tput cup $[lnev-1] $[cnev-1]; echo " "unset nev[n]}tput setaf $[n%7+1]tput cup $[LinLogo+LogoTrab] $ColLogoecho "${Nome:$[LogoTrab*3]:3}"(( LogoTrab++ == Pos-1)) && {LogoTrab=0}}cor=$(((cor+1)%8))}k=$((k % 2 + 1))doneFeliz Natal,JulioDamos treinamento em sua empresa por um preço,
no mínimo, 50% mais barato que qualquer curso,com certificado e nota fiscal.Nosso time de instrutores in company é formado somente porautores de Best Sellers laureados sobre os temas. P. exemplo:Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail HostEm 22 de dezembro de 2016 13:19, address@hidden [shell-script] <address@hidden.br > escreveu:Falae pessoal,
Bem, estou criando um script para contagem de tempo fazendo uso do tput. A ideia é que o script mostrasse a mensagem de tempo no final da tela (rodando em background), mas que pudesse liberar o shell na parte de cima para que o usuário pudesse fazer outras coisas e quando a contagem encerrar, finalizaria com outra mensagem de fim. Sei que é possível dividir a tela com o tput, mas não sei como fazer. Há alguma forma de liberar o shell para o usuário, enquanto a mensagem é mostrada no final da tela? Ou seja, limitaríamos uma pequena parte da tela para a mostragem das mensagens, enquanto a parte de cima do shell ficaria liberada para o usuário fazer outras coisas. Segue abaixo o script:
#!/bin/sh
LIN="`tput lines`"
COL=0
TEMPO=5
flag="0"
while [ "$flag" -eq "0" ]
do
tput ed
tput cup $LIN 0
echo "TEMPO RESTANTE: \c "
tput cup $LIN 22; echo "$TEMPO\c"
TEMPO=$(($TEMPO-1))
if [ $TEMPO -lt 0 ]
then
sleep 1
tput ed
tput cup $LIN 0
echo "O TEMPO ACABOU\c"
tput ed
flag="1"
fi
sleep 1
done &Abraço a todos,
Junior.
[Prev in Thread] Current Thread [Next in Thread]
- Um animação em ascii, Julio C. Neves, 2016/12/23
- Re: [shell-script] Um animação em ascii, Fernando Mercês, 2016/12/23
- Re: [shell-script] Um animação em ascii, Julio C. Neves <=
- Re: [shell-script] Um animação em ascii, Terminal Root, 2016/12/24
- Re: [shell-script] Um animação em ascii, Alexandre Mulatinho, 2016/12/23
- Re: [shell-script] Um animação em ascii, Gmail, 2016/12/24
- Prev by Date: Re: [shell-script] Um animação em ascii
- Next by Date: Re: [shell-script] Um animação em ascii
- Previous by thread: Re: [shell-script] Um animação em ascii
- Next by thread: Re: [shell-script] Um animação em ascii
- Index(es):