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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Um animação em ascii


From: Gmail
Subject: Re: [shell-script] Um animação em ascii
Date: Sat, 24 Dec 2016 23:14:28 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1

Des de Barcelona, Catalunya, Europa,


Bon Nadal "Aos\ Amigos\ da Lista\ Shell" com diu el mestre Julio al seu script.



Pere

address@hidden




------------------------------------

AVIS LEGAL

Nota de confidencialitat: Aquest missatge podria contenir missatges d'empresa i altre informació confidencial tutelada per les lleis de Europea i altres estats, Si Vostè el rep per error o sense ser una de les persones esmenades a la capçalera, haurà de destruir-lo sense copiar-lo ni revelar-l'ho o qualsevol altre acció relacionada amb el contingut del missatge i notificar-ho per correu electrònic a l'emissor del missatge.

Les persones o entitats que incompleixin els deures de confidencialitat podran ésser perseguides davant dels Tribunals de Justícia sota l'empar de la legislació civil, penal i administrativa nacional i internacional.  

Gracies per la seva cooperació.

------------------------------------

LEGAL NOTICE

Confidentiality notice: This mail may include business and other confidential information protected under the laws of and other territories. if you are not one of the intended recipients of the message, you are legally obliged to delete the message content. Furthermore, you are kindly requested to report immediately the incident to the sender.

Breach of confidentiality duties is a serious criminal offence in and other territories. Offenders shall be legally prosecuted worldwide. 

Thank you for your cooperation.



El 23/12/16 a les 14:07, 'Julio C. Neves' address@hidden [shell-script] ha escrit:
 
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" 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=(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 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"
}
                 # 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 $Ano
MontaArr $((lin + 1)) $((c - 10)) "E muito suSHELLso em $Ano" 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 % 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 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

​Feliz Natal
,
Julio

Damos 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 por
autores
​ ​
de Best Sellers
​ ​
​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host


Em 22 de dezembro de 2016 13:19, address@hidden [shell-script] <address@hidden> 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.




reply via email to

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