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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Capitolo 33. Miscellanea<br />

#+ dell’installazione <strong>di</strong> default su alcune <strong>di</strong>stribuzioninon Linux.<br />

# Un grazie a Stefano Palmieri anche per l’autorizzazione a tutte le mo<strong>di</strong>fiche<br />

#+ che sono state necessarie per "italianizzare" lo script. [N.d.T.]<br />

Ve<strong>di</strong> anche Esempio A-22.<br />

Cautela<br />

Esiste, comunque, un grosso problema. Le sequenze <strong>di</strong> escape ANSI non sono<br />

assolutamente portabili. Ciò che funziona bene su certi emulatori <strong>di</strong> terminale (o<br />

sulla console) potrebbe funzionare in modo <strong>di</strong>verso (o per niente) su altri. Uno<br />

script “a colori” che appare sbalor<strong>di</strong>tivo sulla macchina del suo autore, potrebbe<br />

produrre un output illeggibile su quella <strong>di</strong> qualcun altro. Questo fatto compromette<br />

grandemente l’utilità <strong>di</strong> “colorazione” degli script, relegando questa tecnica allo<br />

stato <strong>di</strong> semplice espe<strong>di</strong>ente o ad<strong>di</strong>rittura <strong>di</strong> “bazzecola”.<br />

L’utility color <strong>di</strong> Moshe Jacobson (http://runslinux.net/projects.html#color) semplifica<br />

considerevolmente l’uso delle sequenze <strong>di</strong> escape ANSI. Essa sostituisce i goffi costrutti appena trattati<br />

con una sintassi chiara e logica.<br />

Anche Henry/teikedvl ha creato un’utility (http://scriptechocolor.sourceforge.net/) che semplifica la<br />

realizzazione <strong>di</strong> script che “colorano”.<br />

33.6. Ottimizzazioni<br />

La maggior parte degli script <strong>di</strong> shell rappresentano delle soluzioni rapide e sommarie per problemi non<br />

troppo complessi. Come tali, la loro ottimizzazione, per una esecuzione veloce, non è una questione<br />

importante. Si consideri il caso, comunque, <strong>di</strong> uno script che esegue un compito rilevante, lo fa bene, ma<br />

troppo lentamente. Riscriverlo in un linguaggio compilato potrebbe non essere un’opzione accettabile.<br />

La soluzione più semplice consiste nel riscrivere le parti dello script che ne rallentano l’esecuzione. È<br />

possibile applicare i principi <strong>di</strong> ottimizzazione del co<strong>di</strong>ce anche ad un modesto script <strong>di</strong> shell?<br />

Si controllino i cicli dello script. Il tempo impiegato in operazioni ripetitive si somma rapidamente. Per<br />

quanto possibile, si tolgano dai cicli le operazioni maggiormente intensive in termini <strong>di</strong> tempo.<br />

È preferibile usare i coman<strong>di</strong> builtin invece dei coman<strong>di</strong> <strong>di</strong> sistema. I builtin vengono eseguiti più<br />

velocemente e, <strong>di</strong> solito, non generano, quando vengono invocati, delle subshell.<br />

Si evitino i coman<strong>di</strong> inutili, in modo particolare nelle pipe.<br />

cat "$file" | grep "$parola"<br />

grep "$parola" "$file"<br />

571

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

Saved successfully!

Ooh no, something went wrong!