Nevica sul terminale

Cannoni sparaneve a BormioLa neve artificiale non è solamente per i campi da sci, ma anche per le interfacce a riga di comando di *NIX.

Con una semplice command line si può far nevicare nel proprio terminale (o fare uno scherzo ad un collega).

Questa è la versione ASCII (tutta su una riga):

clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk '{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf "33[%s;%sH ",o,x;printf "33[%s;%sH*33[0;0H",a[x],x;}}'

questa invece è la versione UNICODE:

clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf "\u2743\n");sleep 0.1;done|gawk '{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf "33[%s;%sH ",o,x;printf "33[%s;%sH%s 33[0;0H",a[x],x,$4;}}'

Nell’esempio UNICODE viene utilizzato il carattere 0x2743 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK, ma si possono utilizzare altri simboli simili del range Dingbats. (via climagic)

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

3 pensieri riguardo “Nevica sul terminale”

  1. Uhm… mi sa che mi manca il supporto per ANSI o qualcosa del genere, perche` da me butta fuori codici di controllo misti a fiocchi di neve.

    1. Manca, prima di ogni 33, backslash zero, probabilmente cancellato dal sanificatore della pagina web. il codice backslash zero tre tre è il carattere escape in ottale.

Spazio per un commento