11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

fold<br />

fmt<br />

Capitolo 12. Filtri, programmi e coman<strong>di</strong> esterni<br />

# Provate lo script con qualcosa <strong>di</strong> simile a<br />

# "Nothing so needs reforming as other people’s habits."<br />

# --Mark Twain<br />

#<br />

# Il risultato è:<br />

# "CFPHRCS QF CIIOQ MINFMBRCS EQ FPHIM GIFGUI’Q HETRPQ."<br />

# --BEML PZERC<br />

# Per deco<strong>di</strong>ficarlo:<br />

# cat "$@" | tr "$chiave" "A-Z"<br />

# Questa semplice cifratura può essere spezzata da un do<strong>di</strong>cenne con il<br />

#+ semplice uso <strong>di</strong> carta e penna.<br />

exit 0<br />

# Esercizio:<br />

# ---------<br />

# Mo<strong>di</strong>ficate lo script in modo che sia in grado sia <strong>di</strong> cifrare che <strong>di</strong><br />

#+ decifrare, in base al(i) argomento(i) passato(i) da riga <strong>di</strong> comando.<br />

Nota a margineLe varianti <strong>di</strong> tr<br />

L’utility tr ha due varianti storiche. La versione BSD che non usa le parentesi<br />

quadre (tr a-z A-Z), a <strong>di</strong>fferenza della versione SysV (tr ’[a-z]’<br />

’[A-Z]’). La versione GNU <strong>di</strong> tr assomiglia a quella BSD, per cui è<br />

obbligatorio l’uso del quoting degli intervalli delle lettere all’interno delle<br />

parentesi quadre.<br />

Filtro che <strong>di</strong>mensiona le righe <strong>di</strong> input ad una larghezza specificata. È particolarmente utile con<br />

l’opzione -s che interrompe le righe in corrispondenza degli spazi tra una parola e l’altra (ve<strong>di</strong><br />

Esempio 12-23 e Esempio A-1).<br />

Semplice formattatore <strong>di</strong> file usato come filtro, in una pipe, per “ri<strong>di</strong>mensionare” lunghe righe <strong>di</strong><br />

testo per l’output.<br />

Esempio 12-23. Dimensionare un elenco <strong>di</strong> file<br />

#!/bin/bash<br />

AMPIEZZA=40 # Ampiezza <strong>di</strong> 40 colonne.<br />

b=‘ls /usr/local/bin‘ # Esegue l’elenco dei file...<br />

echo $b | fmt -w $AMPIEZZA<br />

268

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!