De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 31 de dezembro de 2016
Para comemorar a entrada de 2017, que espero que seja melhor que este ano que se encerra, envio um script em Bash, de autoria do Júlio Cezar Neves, o Papai do Shell.
O script é uma celebração do ano novo, utilizando recursos de arte ASCII, semelhante ao script de celebração do Natal, divulgado no dia 24 de dezembro.
Como de hábito, o script é um tutorial de diversos recursos do Bash, vale a pena estudá-lo para iniciar o ano novo com o pé direito, com mais conhecimentos.
Gostaria de agradecer ao Júlio pela enorme boa vontade em compartilhar seus conhecimentos com a comunidade GNU/Linux do Brasil, dando cursos, tirando dúvidas via Internet, sempre com muito bom humor.
O livro do Júlio, Programação Shell Linux já esgotou a sua décima edição e a 11ª deve ser lançada em breve. É nossa bíblia :-)
Aproveitando a ocasião, 2017 é o ano em que a Dicas-L completa 20 anos, a primeira dica foi veiculada no dia 3 de março de 1997.
Feliz Ano Novo!
A seguir, o script:
#!/bin/bash
#
# Brincadeira de Ano Novo
# Autor: Julio Neves
#
trap 'tput cnorm; tput sgr0; clear; exit' 0 2 3 15
Feliz[1]="FFFFFFF EEEEEEE LLL III ZZZZZZZ 22222 0000 1111 7777777777"
Feliz[2]="FFFFFFF EEEEEEE LLL III ZZZZZZZ 2222222 000000 11111 7777777777"
Feliz[3]="FFF EEE LLL III ZZZ 22 222 000 000 11 111 7777"
Feliz[4]="FFFFF EEEEE LLL III ZZZ 222 000 000 111 7777 "
Feliz[5]="FFFFF EEEEE LLL III ZZZ 222 000 000 111 7777 "
Feliz[6]="FFF EEE LLL III ZZZ 222 000 000 111 7777 "
Feliz[7]="FFF EEEEEEE LLLLLLL III ZZZZZZZ 2222222 000000 1111111 7777 "
Feliz[8]="FFF EEEEEEE LLLLLLL III ZZZZZZZ 2222222 0000 1111111 7777 "
LargTela=$(tput cols)
while ((${#Feliz[1]} >= LargTela))
do
zenity --entry --title "Feliz Ano Novo" --text "Esta arte ascii ;) precisa de uma tela com\numa largura mínima de ${#Feliz[1]} caracteres.\n\n\t\t- Amplie a tela e clique OK\n\t\t- Clique Cancelar para sair" || exit 1
LargTela=$(tput cols)
done
ColCab=$((($(tput cols)-${#Feliz[1]})/2))
Cor=6
function ApagaAcende
{
tput cup $[Lin - 4] $[Meio + 1]
((n == 0)) && {
echo "TIM TIM"
n=1
return
}
tput el
n=0
}
function Cab
{
Cor=$[Cor == 7?0:++Cor]
tput setaf $Cor; tput bold
for ((kk=1; kk<9; kk++))
{
tput cup $((kk-1)) $ColCab
echo "${Feliz[kk]}"
}
tput setaf 3
}
function FazBolha
{
for k in 1 2
do
y=0
for Sai in 2 4 6 6
do
C1=$[Sai == 2?$[Meio + 1]:$[Sai == 4?Meio - 0:Meio - 1]]
C2=$[Sai == 2?$[Meio + 7]:$[Sai == 4?Meio + 6:Meio + 5]]
Var=
for ((j=1; j<=Sai; j++))
{
Var=$Var$[RANDOM % 2]" "
}
x=0
let y++
for SN in $Var
do
((SN)) && {
tput cup $[Lin + 2 - y] $[k == 1?C1 + x:C2 + x]
echo .
}
let x++
done
done
done
}
Cols=5
Fim=$(tput cols)
# while ((Fim < 96))
# do
# tput flash
# zenity --error --text "Ponha o terminal em\nModo de tela cheia" || exit 1
# Fim=$(tput cols)
# done
Meio=$[Fim / 2 - 5]
Lin=$[$(tput lines) - 7]
tput civis
tput setab 1
tput bold
tput setaf 3
clear
for ((i=1; i<$Meio; i++))
do
tput cup $Lin $[i - 1]; echo ' '
tput cup $[Lin + 1] $[i - 1]; echo ' '
tput cup $[Lin + 2] $[i - 1]; echo ' '
tput cup $[Lin + 3] $[i - 1]; echo ' '
tput cup $[Lin + 4] $[i - 1]; echo ' '
tput cup $[Lin + 5] $[i - 1]; echo ' '
tput cup $Lin $i; echo '\____/'
tput cup $[Lin + 1] $i; echo ' \ /'
tput cup $[Lin + 2] $i; echo ' \/'
tput cup $[Lin + 3] $i; echo ' ||'
tput cup $[Lin + 4] $i; echo ' ||'
tput cup $[Lin + 5] $i; echo ' (__)'
tput cup $Lin $[Fim - i - 5]; echo ' '
tput cup $[Lin + 1] $[Fim - i - 5]; echo ' '
tput cup $[Lin + 2] $[Fim - i - 5]; echo ' '
tput cup $[Lin + 3] $[Fim - i - 5]; echo ' '
tput cup $[Lin + 4] $[Fim - i - 5]; echo ' '
tput cup $[Lin + 5] $[Fim - i - 5]; echo ' '
tput cup $Lin $[Fim - i - 6]; echo '\____/'
tput cup $[Lin + 1] $[Fim - i - 6]; echo ' \ /'
tput cup $[Lin + 2] $[Fim - i - 6]; echo ' \/'
tput cup $[Lin + 3] $[Fim - i - 6]; echo ' ||'
tput cup $[Lin + 4] $[Fim - i - 6]; echo ' ||'
tput cup $[Lin + 5] $[Fim - i - 6]; echo ' (__)'
Cab
sleep 0.05
done
for ((f=0; f<5; f++))
{
tput flash
sleep 0.02
}
while true
do
((++Conta % 6)) || ApagaAcende
FazBolha
Cab
sleep 0.05
y=0
for Sai in 2 4 6 6
do
let y++
C1=$[Sai == 2?$[Meio + 1]:$[Sai == 4?Meio - 0:Meio - 1]]
C2=$[Sai == 2?$[Meio + 7]:$[Sai == 4?Meio + 6:Meio + 5]]
for ((j=1; j<=Sai; j++))
{
Trab="$Trab"$(((Sai == 4)) && echo -n _ || echo -n ' ')
}
tput cup $[Lin + 2 - y] $C1
echo "$Trab"
tput cup $[Lin + 2 - y] $C2
echo "$Trab"
Trab=
done
Cab
sleep 0.05
done