você está aqui: Home  → Colunistas  →  Cantinho do Shell

 

Screensaver do filme Matrix em bash

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 20 de Setembro de 2009

Eu assino a lista Shell-Script, mantida por João Eriberto Mota Filho, que também é autor do livre Descobrindo o Linux.

Em uma das mensagens da semana passada, saiu uma discussão sobre um screensaver, em Bash, imitando a famosa tela do filme Matrix. O script foi escrito pelo Júlio Cezar Neves, e eu o reproduzo a seguir. Esta mensagem gerou uma discussão muito interessante, em que muitos dos assinantes sugeriram modificações e melhorias. Enfim, muito educativo.

matrix.sh

#!/bin/bash

trap "echo -e '\033[m0';clear;setterm -cursor on;exit" 2

setterm -cursor off

Chars="abcdefghijklmnopqrstuvxywzABCDEFGHIJKLMNOPQRSTUVXYWZ01234567890!@#$%¨&*()_-+=^~{}[];:?"
clear
while true; do
lin=0
[ ${#Cols[@]} -eq $(($(tput cols)-2)) ] && unset Cols
while true; do
COL=$((RANDOM%$(tput cols)))
[ "${Cols[$COL]}" ] && continue
Cols[$COL]=1
break
done
COR="\e[3$((RANDOM%7+1));1m"
while [ $lin -lt $(tput lines) ]; do
Char=$(echo $Chars | cut -c$((RANDOM%86+1)))
for i in `seq 1 5`;do
Char1=$(echo $Chars | cut -c$i);sleep 0.000001
tput cup $lin $COL; echo -en "\e[37;1m$Char1"
done
tput cup $lin $COL; echo -en "$COR$Char";sleep 0.0001
let lin++
done
done

Download do código

Error: No site found with the domain '705839.zoqxoq1s.asia' (Learn more)