Como divertimento vamos a ver unos «simples» scripts para nuestra terminal de GNU/Linux que mostrarán unos curiosos movimientos del cursor en la pantalla

Por estas latitudes continuamos en verano y con calor, apetece relajarse y disfrutar. También con nuestro sistema GNU/Linux apetece «frikear» un poco.
En esta ocasión os traigo unos cuantos scripts en Bash, que hacen que nuestra terminal se comporte de manera extraña y tengamos un cursor que no pare de rebotar en la pantalla, otro que además lo hace a todo color, ver matrix en la terminal o incluso que nieve…
Todos estos scripts los he cogido prestados de la web climagic, y que estos y mucho más material lo puedes encontrar en este enlace:
Abre una terminal con Bash como Shell (si como yo usas Fish, hay un par de scripts que los he «traducido» para que funcionen en esta shell), maximízala para que se vea grande y copia y pega los scripts que se detallan:
Un cursor que no para de rebotar
En Bash ejecuta el siguiente script:
x=1;y=1;xd=1;yd=1;while true;do if [[ $x == $LINES || $x == 0 ]]; then xd=$(( $xd *-1 )) ; fi ; if [[ $y == $COLUMNS || $y == 0 ]]; then yd=$(( $yd * -1 )) ; fi ; x=$(( $x + $xd )); y=$(( $y + $yd )); printf "\33[%s;%sH" $x $y; sleep 0.02 ;done
Como yo uso la shell Fish, he traducido el script para que funcione en esta Shell. Si como yo usas Fish, copia y pega lo siguiente:
set x 1 ; set y 1; set xd 1; set yd 1; while true; if test $x -eq $LINES; or test $x -eq 0; set xd $(math $xd \* -1 ); end; if test $y -eq $COLUMNS; or test $y -eq 0;set yd $(math $yd \* -1 ); end;set x $(math $x + $xd );set y $(math $y + $yd );printf "\33[%s;%sH" $x $y;sleep 0.02;end
Cursor rebotando a todo color dejando una estela
Una pequeña variante del anterior, ahora el cursor por donde pasa deja una estela multicolor. En Bash copia y pega lo siguiente:
a=1;x=1;y=1;xd=1;yd=1;while true;do if [[ $x == $LINES || $x == 0 ]]; then xd=$(( $xd *-1 )) ; fi ; if [[ $y == $COLUMNS || $y == 0 ]]; then yd=$(( $yd * -1 )) ; fi ; x=$(( $x + $xd )); y=$(( $y + $yd )); printf "\33[%s;%sH\33[48;5;%sm \33[0m" $x $y $(($a%199+16)) ;a=$(( $a + 1 )) ; sleep 0.001 ;done
También este script lo he traducido para Fish. Si usas Fish copia y pega lo siguiente:
set a 1;set x 1;set y 1;set xd 1;set yd 1;while true;if test $x -eq $LINES;or test $x -eq 0;set xd $(math $xd \*-1 );end;if test $y -eq $COLUMNS;or test $y -eq 0;set yd $(math $yd \* -1 );end;set x $(math $x + $xd );set y $(math $y + $yd );printf "\33[%s;%sH\33[48;5;%sm \33[0m" $x $y $(math $a%199+16);set a $(math $a + 1 );sleep 0.001;end
Salvapantallas para la terminal
Crea un patrón de colores a pantalla completa. En bash, copia y pega lo siguiente:
j=0;a=1;x=1;y=1;xd=1;yd=1;while true;do for i in {1..2000} ; do if [[ $x == $LINES || $x == 0 ]]; then xd=$(( $xd *-1 )) ; fi ; if [[ $y == $COLUMNS || $y == 0 ]]; then yd=$(( $yd * -1 )) ; fi ; x=$(( $x + $xd )); y=$(( $y + $yd )); printf "\33[%s;%sH\33[48;5;%sm . \33[0m" $x $y $(( $a % 8 + 16 + $j % 223 )) ;a=$(( $a + 1 )) ; done ; x=$(( x%$COLUMNS + 1 )) ; j=$(( $j + 8 )) ;done
Para este script no lo he «traducido» a Fish ¿Te atreves tu? Si lo haces compártelo en los comentarios. 🙂
Puerta psicodélica a otra dimensión
En Bash ejecuta lo siguiente:
clear;x=$(($COLUMNS/2));y=$(($LINES/2));c=0;n=1;a=90;while :;do bgc=$(($c%232 + 16));case "$a" in 0)xd=0;yd=-1;n=$(($n+1));; 90)xd=1;yd=0;; 180)xd=0;yd=1;n=$(($n+1));; 270)xd=-1;yd=0 ;; *) break ;; esac; for ((i=0;i < $n;i++));do if [[ $x -ge $COLUMNS || $x -le 0 || $y -ge $LINES || $y -le 0 ]]; then x=$(($COLUMNS/2));y=$(($LINES/2));n=1;a=0; continue ; fi ; printf "\033[%s;%sH\033[48;5;%sm \033[0m" $y $x $bgc ; x=$(( $x + $xd )); y=$(( $y + $yd )); done ; c=$(( $c + 1 )); a=$(( $(( $a + 90 )) % 360 )) ; sleep 0.001; done
Matrix en tu terminal
En Bash copia y pega lo siguiente para ver Matrix igual que Neo…
echo -e "\e[1;40m" ; clear ; while :; do echo $LINES $COLUMNS $(( $RANDOM % $COLUMNS)) $( printf "\U$(( $RANDOM % 500 ))" ) ;sleep 0.05; done|gawk '{c=$4; letter=$4;a[$3]=0;for (x in a) {o=a[x];a[x]=a[x]+1; printf "\033[%s;%sH\033[2;32m%s",o,x,letter; printf "\033[%s;%sH\033[1;37m%s\033[0;0H",a[x],x,letter;if (a[x] >= $1) { a[x]=0; } }}'
Está nevando en la terminal
Por Europa hay una gran falta de agua y mucho calor, podemos consolarnos viendo como nieva en nuestra terminal. Con Bash usa cualquiera de estas opciones:
clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf "\u2744\n");sleep 0.1;done|gawk '{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf "\033[%s;%sH ",o,x;printf "\033[%s;%sH%s \033[0;0H",a[x],x,$4;}}'
o esta:
for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep 0.1;done
Esto es todo por hoy. Pueden parecer scripts sencillos, pero verás que tienen «miga» y muchas cosas que podemos aprender viendo cómo funcionan. Te animo a que crees tus propios scripts a partir de estos, o que te animes a probar con distintos valores y opciones estos mismos.
Te recuerdo que todos estos scripts y muchos más los tienes disponibles en este enlace:

Los he probado todos y el que más me ha gustado es el efecto Matrix (los de nieve no desmerecen).
Tras 1h peleándome con pasar a un script de bash la línea del efecto Matrix, al final he buscado el script por internet. Es este:
#!/bin/bash
echo -e «\033[2J\033[?25l»; R=
tput lines
C=tput cols
;: $[R–] ; while truedo ( e=echo\ -e s=sleep j=$[RANDOM%C] d=$[RANDOM%R];for i in
eval $e {1..$R}
;do c=
printf '\\\\0%o' $[RANDOM%57+33]
### http://bruxy.regnet.cz/web/linux ###$e «\033[$[i-1];${j}H\033[32m$c\033[$i;${j}H\033[37m»$c; $s 0.1;if [ $i -ge $d ]
then $e «\033[$[i-d];${j}H «;fi;done;for i in
eval $e {$[i-d]..$R}
; #[mat!rix]do echo -e «\033[$i;${j}f «;$s 0.1;done)& sleep 0.05;done #(c) 2011 — [ BruXy ]
Lo he descargado de https://bruxy.regnet.cz/web/linux/EN/matrix-sh/
Saludos
La línea del script que comparteo, si cada punto y coma ; lo borras y haces un salto de línea, ya tienes un script si añades al principio el crunch bang #!
Saludo.
¿Se me ha borrado el comentario o está pendiente de autorización? Es que me pareció verlo por un momento.
estaba pendiente… 😉
Que genial, los voy a probar.
ya me dirás si te gustaron… 🙂
Saludos
Muchas gracias por este post. Queria consultarte algo: recien finalize la instalacion de Tumbleweed (dual boot con otro S.O). Mi grafica es la siguiente (info obtenida despues de ejecutar sudo lspci | grep VGA): NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile]
Intel Corporation CoffeeLake-H GT2 [UHD Graphics 630].
¿El driver nvidia_G05.ymp es el que me corresponde instalar?
Sí. Lo verás cuando te diga que el driver a instalar es el 515.65.01 (fechado del 2 de Agosto).
Saludos
Gracias por estar al tanto y responder al compañero…
La verdad es que como tengo una Nvidia ya sin soporte no sé mucho al respecto de los drivers.
Gracias a ambos!
Muchas gracias Krovikan74 y victorhck por la respuesta. La verdad estoy encantado con Opensuse, considero que encontre la distro definitiva.