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

Recomende este artigo nas redes sociais

 

 

Veja a relação completa dos artigos desta coluna