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.

Capitolo 1. Perché programmare la shell?<br />

• In applicazioni complesse dove è necessaria la programmazione strutturata (necessità <strong>di</strong> tipizzazione<br />

delle variabili, prototipi <strong>di</strong> funzione, ecc.)<br />

• In applicazioni particolari su cui si sta rischiando il tutto per tutto, o il futuro della propria azienda<br />

• In situazioni in cui la sicurezza è importante, dove occorre garantire l’integrità del sistema e<br />

proteggerlo contro intrusioni, cracking e vandalismi<br />

• In progetti costituiti da sotto-componenti con <strong>di</strong>pendenze interconnesse<br />

• Sono richieste operazioni su file <strong>di</strong> gran<strong>di</strong> <strong>di</strong>mensioni (<strong>Bash</strong> si limita ad un accesso sequenziale ai file,<br />

eseguito riga per riga e in un modo particolarmente goffo ed inefficiente)<br />

• È necessario il supporto nativo per gli array multi<strong>di</strong>mensionali<br />

• Sono necessarie strutture <strong>di</strong> dati quali le liste collegate o gli alberi<br />

• È necessario generare o manipolare grafici o GUI<br />

• È necessario un accesso <strong>di</strong>retto all’hardware del sistema<br />

• È necessaria una porta o un socket I/O<br />

• È necessario l’utilizzo <strong>di</strong> librerie o interfacce per l’esecuzione <strong>di</strong> vecchio co<strong>di</strong>ce<br />

• In applicazioni proprietarie a co<strong>di</strong>ce chiuso (il co<strong>di</strong>ce sorgente degli script <strong>di</strong> shell è aperto e tutti lo<br />

possono esaminare)<br />

Nel caso ci si trovi <strong>di</strong> fronte ad una o più delle eventualità appena descritte, occorre prendere in<br />

considerazione un linguaggio <strong>di</strong> <strong>scripting</strong> più potente -- che potrebbe essere Perl, Tcl, Python, Ruby -- o<br />

possibilmente un linguaggio compilato <strong>di</strong> alto livello, quale il C, C++ o Java. Anche in questo caso, però,<br />

eseguire dei prototipi <strong>di</strong> un’applicazione come script <strong>di</strong> shell potrebbe costituire un’utile base <strong>di</strong> sviluppo.<br />

Sarà utilizzata <strong>Bash</strong>, acronimo <strong>di</strong> “Bourne-Again shell”, e un po’ un gioco <strong>di</strong> parole sull’ormai classica<br />

shell Bourne <strong>di</strong> Stephen Bourne. <strong>Bash</strong> è <strong>di</strong>ventata uno standard de facto dello <strong>scripting</strong> <strong>di</strong> shell su ogni<br />

variante <strong>di</strong> sistema UNIX. La maggior parte dei principi spiegati in questo libro può essere applicata<br />

altrettanto bene allo <strong>scripting</strong> con altre shell, quale la Shell Korn, da cui <strong>Bash</strong> ha derivato alcune delle<br />

sue funzionalità 2 e la Shell C e le sue varianti (si faccia attenzione che programmare con la shell C non è<br />

raccomandabile a causa <strong>di</strong> alcuni problemi ad essa inerenti, come evidenziato da Tom Christiansen in un<br />

post su Usenet (http://www.etext.org/Quartz/computer/unix/csh.harmful.gz) nell’Ottobre 1993).<br />

Quello che segue è un manuale sullo <strong>scripting</strong> <strong>di</strong> shell che sfrutta i numerosi esempi per illustrare le varie<br />

funzionalità della shell. Gli script <strong>di</strong> esempio funzionano correttamente -- sono stati verificati, per quanto<br />

sia stato possibile -- e alcuni <strong>di</strong> essi possono persino essere impiegati per scopi pratici. Il lettore può<br />

<strong>di</strong>vertirsi con il co<strong>di</strong>ce degli esempi presenti nell’archivio dei sorgenti (nomescript.sh oppure<br />

nomescript.bash), 3 attribuirgli i permessi <strong>di</strong> esecuzione (con chmod u+rx nomescript), quin<strong>di</strong><br />

eseguirli e vedere cosa succede. Se l’archivio dei sorgenti non dovesse essere <strong>di</strong>sponibile, allora si ricorra<br />

ad un taglia-incolla dalle versioni HTML (http://www.tldp.org/LDP/abs/abs-guide.html.tar.gz), pdf<br />

(http://www.tldp.org/LDP/abs/abs-guide.pdf) o testo<br />

(http://www.ibiblio.org/pub/Linux/docs/linux-doc-project/abs-guide/abs-guide.txt.gz). Si faccia<br />

attenzione che alcuni degli script qui riportati anticipano alcune funzionalità che non sono state ancora<br />

spiegate e questo richiede, per la loro comprensione, che il lettore <strong>di</strong>a uno sguardo ai capitoli successivi.<br />

2

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

Saved successfully!

Ooh no, something went wrong!