Introduzione allo Shell Scripting |
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.
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.
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.
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.
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
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/>).
Un grazie a tutti coloro che mi hanno aiutato nella stesura di questo lavoro.
Introduzione allo Shell Scripting |