previous up

Introduzione allo Shell Scripting

index next

Subsections



1. Introduzione

Questo primo capitolo intende chiarire alcune convenzioni usate in questo documento ed allo stesso tempo fornire al lettore dei concetti introduttivi sull'uso della documentazione disponibile in ambiente Unix.


1.1 Perché questo documento

Chiunque abbia usato in maniera non passiva un calcolatore si sarà chiesto come questo riesca a distinguere le istruzioni che gli vengono impartite. Questo processo consiste nel prendere un input dall'utente, processarlo e darlo al calcolatore. In ambienti Unix/POSIX queste funzioni vengono svolte da un apposito software, la Shell o interprete di comandi .




Sfruttando le caratteristiche degli interpreti di comandi, è possibile realizzare semplici script in grado di automatizzare processi lunghi e noiosi. Si pensi a quanto fastidioso sarebbe dover convertire i nomi di 200 file tutti in lettere minuscole. Un lavoro improbo solo a pensarci. Grazie a poche righe di codice, però, questo problema può diminuire enormente la sua difficoltà ed essere svolto in pochi istanti. Un altro uso comune degli script di shell è quello di essere usati come banco di prova per progetti di software. Prima di realizzare un programma, si può cercare di farne un clone usando uno script, in modo da verificarne usabilità e funzionalità.




Questo testo si propone di fornire una semplice e concisa introduzione allo shell scripting, puntando maggiormente al lato pratico della questione. Allo stesso tempo, si cerca di colmare quella che per molti utenti italiani è una pecca del mondo GNU/Linux. Se escludiamo il magnifico lavoro svolto dal PLUTO e da Daniele Giacomini con i suoi Appunti di Informatica Libera, il panorama della documentazione in italiano è piuttosto desolato.




Il materiale è corredato da numerosi esempi; è auspicabile che il lettore li provi sulla propria macchina, cercando allo stesso tempo di personalizzarli. Si è scelto di non trattare singolarmete i comandi disponibili in un sistema Unix, questi verranno introdotti brevemente negli esempi, dandone una minima spiegazione. Il lettore interessato potrà consultare autonomamente la pagina manuale del comando in esame per approfondire le proprie conoscenze.




Per il momento, il lavoro intende essere un testo introduttivo, incompleto sotto molti aspetti; nonostante ciò, si spera che con il tempo e con le segnalazioni dei lettori possa crescere e diventare un punto di riferimento per ogni utente che desidera avvicinarsi all'argomento. Suggerimenti e critiche saranno sempre bene accetti, così come le considerazioni circa l'organizzazione dei contenuti. Per comunicare queste impressioni, scrivete a Domenico Delle Side (<nicodds@Tiscali.IT>).




FIXME: Scrivere qualcosa di più bello, questa introduzione non mi piace.


1.2 Requisiti minimi

Per leggere in maniera proficua il documento è necessario avere una minima familiarità con la linea di comando. Allo stesso tempo, occorrerebbe anche conoscere i vari comandi messi a disposizione dai sistemi Unix. Sono necessarie inoltre una buona dose di pazienza e di buona volontà.




Dal lato tecnico è anche necessario avere un buon editor di testi; il mio consiglio è di usare l'onnipotente Emacs , che ha tutto ciò di cui un programmatore possa avere bisogno. Un altro ottimo editor è vi , o la sua versione migliorata vim.




Un altro elemento essenziale è ovviamente avere una shell Bash. Alcuni degli argomenti trattati, infatti, sono caratteristici di questo particolare interprete di comandi e potrebbero non essere transponibili ad altre shell.


1.3 Convenzioni

Nel corso della discussione verranno usati caratteri differenti per sottolineare alcuni concetti. In particolare si userà il corsivo per i nomi di persone e di cose (e.g. Bash, Unix, Mario Rossi, ...); il grassetto per dare maggior peso ad una parola o ad un concetto in una frase.




Gli esempi di codice ed i comandi Unix saranno tutti scritti con un carattere tipo macchina da scrivere (e.g. #!/bin/bash, echo, ...). Ogni esempio sarà preceduto da un titoletto del tipo ``Esempio x.y.z''1.1 che lo numererà e seguito immediatamente da una sezione ``Come funziona:'' che ne chiarirà il funzionamento.


1.4 Pagine manuale

Una delle caratteristiche più affascinanti del mondo Unix è la quantità smisurata di informazioni che ne accompagnano il software. Ogni comando infatti possiede la sua pagina manuale (manpage) in cui vengono descritti brevemente il suo funzionamento, i parametri accettati, ecc ...




Accedere alla pagina manuale di un comando è piuttosto semplice, è sufficiente infatti digitare in un terminale il comando man nome_comando. Le pagine manuale sono divise in sezioni, ognuna riguardante un argomento specifico, in particolare:




Qualora il formato elettronico delle manpage fosse scomodo, si può facilmente stampare la pagina in questione con il l'istruzione man -t nome_comando | lpr, o man -t nome_comando > nome_comando.ps se si prefersice il formato postscript.




Se si ricerca la pagina manuale senza conoscere il nome esatto di un programma, si può tentare con i comandi apropos e whatis. Il primo cerca nel loro database comune per una specifica stringa, mentre il secondo per una parola.
Ad esempio:

[nico@deepcool nico]$ whatis whatis
whatis         (1)  - search the whatis database for complete words


1.5 Licenza

Il documento è rilasciato al pubblico sotto licenza GNU FDL (GNU Free Documentation License). Per i termini della licenza, si consulti l'appendice A.




Anche se molti di questi sono banali, tutti gli esempi sono rilasciati sotto licenza GNU GPL (GNU General Public License). Una copia della licenza può essere reperita all'indirizzo http://it.gnu.org/licenses/gpl.html.




Chi volesse avere maggiori informazioni sul progetto GNU e sui suoi successi può consultare direttamente il suo sito Internet presso http://www.gnu.org, una buona parte del quale viene tradotto e tenuto aggiornato in lingua italiana dal Gruppo dei Traduttori Italiani dei Testi del Progetto GNU (<http://www.softwarelibero.it/gnudoc/>).


1.6 Ringraziamenti

Un grazie a tutti coloro che mi hanno aiutato nella stesura di questo lavoro.

previous up

Introduzione allo Shell Scripting

index next

Domenico Delle Side 2002-09-24