Nevica sul terminale

La 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)


Pubblicato

in

,

da

Tag:

Commenti

3 risposte a “Nevica sul terminale”

  1. Avatar Kurgan

    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. Avatar Luigi Rosa

      “Indossi gli occhiali da sole?” [cit.]

      Manca il supporto ANSI.

    2. Avatar Jack
      Jack

      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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *