Árvore de Natal do Julio Neves
Publicado por Fábio Berbert de Paula (última atualização em 20/12/2011)
[ Hits: 8.476 ]
Homepage: https://fabio.automatizando.dev
Shell script enviado pelo Julio Neves ( http://www.julioneves.com/ ) desejando a todos do VOL um feliz natal e próspero ano novo!
O código desenha uma árvore de natal animada no console. Muito bom mesmo :)
#!/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" 2 function MontaArr { # Monta um array Arr[$Lin$Col] (ambas com zeros à esqueda) #+ com o caracteres que está naquela posição local i local l for ((i=0; i<${#3}; i++)) { l="${3:i:1}" Arr[$(printf "$1%02i" $[$2+$i])]="$l:$4" } } NomeIni=(Julio Neves) # Troque $NomeIni para enviar a amigos, mas # sempre pelo menos 2 e somente 2 nomes ;) # Preparando nome para escrever no canto inferior direito da tela for ((Pos=0; ;Pos++)) { s0=${NomeIni[0]:$Pos:1} s0=${s0:- } s1=${NomeIni[1]:$Pos:1} s1=${s1:- } [[ $s0 == ' ' && $s1 == ' ' ]] && break Nome="$Nome$s0 $s1" } # UltLin="São os votos de "$Nome" para você e sua família" # UltCol=$[($(tput cols) - ${#UltLin}) / 2] # Montando a Árvore ColLogo=$[$(tput cols)-4] LinLogo=$[$(tput lines)-$Pos-1] LogoTrab=0 tput civis lin=2 col=$(($(tput cols) / 2)) ccnev=$[col - 13] c=$((col-1)) est=$((c-2)) cor=0 tput setab 0; clear tput setaf 2; tput bold for ((i=1; i<20; i+=2)) { tput cup $lin $col for ((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 bold for ((i=1; i<=2; i++)) { MontaArr $lin $[c+1] mWm 3 tput cup $((lin++)) $c echo mWm } tput setab 0; tput setaf 7; tput bold tput cup $lin $((c - 4)); echo BOAS FESTAS MontaArr $lin $[c-3] "BOAS FESTAS" 7 tput cup $((lin + 1)) $((c - 11)); echo E muito suSHELLso em 2012 MontaArr $((lin + 1)) $((c - 10)) "E muito suSHELLso em 2012" 7 # tput cup $((lin + 3)) $UltCol; echo $UltLin let c++ k=1 # Pendurando as bolas (da árvore, claro!) while true do for ((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 bold tput cup ${linha[$[k-1]$i]} ${coluna[$[k-1]$i]}; echo \* MontaArr ${linha[$[k-1]$i]} ${coluna[$[k-1]$i]} \* 2 unset 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 bolas tput cup $li $co echo o linha[$k$i]=$li coluna[$k$i]=$co MontaArr $li $co o $cor sh=1 for l in S H E L L do tput cup $((lin+1)) $((c-3+sh)) echo $l let sh++ done # Olha a neve for ((n=0; n<15; n++)) { [ "${nev[n]}" ] || { nev[n]=$[$RANDOM % 12 + 1]$(printf "%02i" $[RANDOM % 28 + 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 0 tput setaf $CorAnt tput 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] $ColLogo echo "${Nome:$[LogoTrab*3]:3}" (( LogoTrab++ == Pos-1)) && { LogoTrab=0 } } cor=$(((cor+1)%8)) } k=$((k % 2 + 1)) done
Script para Wireless no Fedora 7 (modelo ipw3945)
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - CALCULA O % DE USO DA QUOTA E ATUALIZA BANCO
Monitoração e coleta de dados de performance de servidores GNU/Linux
Limpa comentários e linhas em branco nos arquivos de configuração (.conf)
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
Como fzr Downgrade em um pacote específico (5)
Inspiração para desenhar no Linux (1)
Os empreguim de meu Deus estão cada vez mais tecnológicos (6)