Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

Descanso de tela para terminal

Anteriormente postei um descanso de tela para terminal muito doido, só que hoje resolvi postar sua versão sóbria; onde o texto percorrer a tela em direções geometricamente direcionadas (tradicional bate-la-da-cá).


Script: xdescanso_tela.sh

#!/bin/bash

#-------------------------------------------------------
# Data:       20 de julho de 2016
# Criado por: Juliano Santos
# Script:     xdescanso_tela.sh
# Descrição:  Simulando descanso de tela para terminal.
# Página:     http://www.shellscriptx.blogspot.com.br
# Github:     https://github.com/shellscriptx
#--------------------------------------------------------

# Requer argumentos.
[[ $* ]] || { echo "Uso: $0 MENSAGEM"; exit 1; }

# Mensagem
MSG="$*"

# Reseta as configurações quando o script for finalizado.
trap 'tput reset' EXIT

# Define as coordenadas iniciais e direção.
c=1;x=1;y=1
yd="((y++))";xd="((x++))"

# Limpa conf e oculta cursor.
tput sgr0; tput civis

# Loop infinito
while true; do
    # Limpa a tela a cada ciclo
    clear
    # Subtrai o número de colunas do comprimento da mensagem, obtendo a coordenada 
    # limite 'y' e alterando a direção do movimento quando o último caractere
    # chegar ao final da tela. evitando que mensagem ultrapasse os limites.
    xs=$(($(tput cols)-${#MSG}))
    ys=$(($(tput lines)-1))                         # Total de linhas -1
    tput setf $c                                    # Cor de fundo, armazenado em "$c"
    tput cup $y $x; echo -n "$MSG"                  # Imprime a mensagem sem quebra de linha nas coordenadas "$y" e "$x"
    # Direções.                                     # Incrementa 'c = (cor)' sempre que houver alterações na direção.
    [ $y -ge $ys ] && { yd="((y--))"; ((c++)); }    # Se coordenada 'y' >= 'limite' muda operação de y para 'y--' (cima)
    [ $y -le 0 ] && { yd="((y++))"; ((c++)); }      # se coordenada 'y' <= 0 muda operação de y para 'y++' (baixo)
    [ $x -ge $xs ] && { xd="((x--))"; ((c++)); }    # Se coordenada 'x' >= 'limite' muda operação de 'x' para 'x--' (esquerda) 
    [ $x -le 0 ] && { xd="((x++))"; ((c++)); }      # Se coordenada 'x' <= 0 muda operação de 'x' para 'x++' (direita)
    [ $c -gt 7 ] && c=1                             # Se cor > 7, reinicia o ciclo atribuindo o valor 1
    eval "$xd;$yd"                                  # Executa o modo atual de operações de 'x' e 'y' armazenados em 'xd' e 'yd'.
    sleep 0.1                                       # Tempo de 0.1 milesegundos entre os ciclos da tela.
done
# fim
Github

Sei que pode parecer inútil, mas é valido pela brincadeira, criatividade e principalmente pelo êxito naquilo que se propôs a fazer. 😂😂😎😎

Comentários

Contato

Nome

E-mail *

Mensagem *