2011-07-13

Bash script per effetto matrix, poi multicolore

Leggendo i cinguettii ho notato un post interessante sull'utilizzo di bash per la generazione di un rudimentale effetto Matrix, intendo quelle schermate in cui dei caratteri verdi scorrevano verso il basso...


tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"

provare per credere.

Guardandolo con il mio amico/collega Gianni per decifrarne il funzionamento e tratte le varie conclusioni ho raccolto la sua sfida: Adesso andrebbe modificato per far comparire i numeri pari di un colore ed i dispari di un altro colore
Nessun problema! dico io, aggiungo un grep dopo aver impartito il valore always all'opzione --color per colorare anche in caso di output in pipe:
tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;31" grep --color=always "[02468]" | GREP_COLOR="1;32" grep --color=always "[13579]"
Ops... non funziona... ma perché?
Perché ho scelto di colorare di rosso i numeri pari e poi di verde i dispari, allora provo ad invertire, dispari rosso e pari verde:
tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;31" grep --color=always "[13579]" | GREP_COLOR="1;32" grep --color=always "[02468]"
La trappola era la presenza delle cifre dispari nella sequenza di caratteri che colorano l'output, tale sequenza veniva di nuovo colorata dal secondo grep.

1 commento:

  1. SCUSI MA COME SI CHIAMA QUEL PROGRAMMA IN FOTO????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

    RispondiElimina