Bourne Shell Scripting

Wikibooks, manuali e libri di testo liberi.

Copertina

Lo scripting di shell ha nei sistemi GNU/Linux e Unix una grandissima importanza. Quasi tutto ciò che avviene in una macchina *nix viene fatto con i cosiddetti script di bash.

Indice

[modifica] I comandi

I comandi sono tutte quelle "istruzioni" che ci permettono di interagire con un sistema operativo. Un comando di per se è un programma che può essere lanciato da noi manualmente, oppure da uno script. Solitamente i comandi vengono invocati, seguiti da un numero n di parametri o opzioni, che servono a modificarne il funzionamento. Come illustrato di seguito i comandi si dividono in Interni o Esterni alla shell. Un utile metodo per stabilire se un comando sia Interno o Esterno è il comando:

type nome_comando

Tramite questo comando sarà possibile stabilire se un dato comando sia incluso nella shell o sia esterno.

[modifica] Interni a Bash

ls

Questo comando permette l'elencazione del contenuto di una directory. Molto utile per alcuni tipi di script, ammette alcune opzioni molto utili . In particolare molto usate sono -l e -a che rispettivamente permettono di vedere tutte le caratteristiche dei dati contenuti nella cartella e di vedere anche i file nascosti relativi alla cartella.

cat

Con questo comando si può leggere il contenuto di un file di testo. Per la modifica del file si rimanda a Imparare l'editor Vi o Imparare l'editor Pico o ancora Guida a Emacs

[modifica] Programmi esterni

head

Questo comando permette di vedere l'inizio di un file. Particolarmente utile è nello scripting con la opzione -n <numero> che indica quante righe mostrare

tail

Questo è il comando corrispondente a head che permette invece di visualizzare la fine dei file. La sua utilità è duplice. Può essere infatti usato come comando per lo scripting, anch'esso con la opzione -n <numero>, oppure come normale strumento di sistema. Può essere infatti a volte utile avere sempre sott'occhio i cambiamenti ad un file (tipicamente un log di sistema). In tal caso si può usare l'opzione -f <file>, che permette di mostrare in modo continuativo i cambiamenti e gli append al file.

ps

Questo programma permette di vedere quali sono i processi attivi e in corso. Viene generalmente usato con l'opzione -A, che permette di visualizzare tutti i processi attivi e non solo ps e il processo genitore bash.

grep

Potentissimo strumento per la selezione di pattern o semplici righe all'interno di un file.

[modifica] Tecniche avanzate

Quasi mai uno dei programmi precedentemente citati viene usato da solo. Si usano in genere delle concatenazioni di comandi. Queste vengono dette Pipe.

[modifica] Pipe

[modifica] Reindirizzamento

Ogni programma presenta di default tre flussi di dati: uno di ingresso (STDIN), uno di uscita (STDOUT) e uno di errore (STDERR). Generalmente questi flussi di dati sono collegati rispettivamente alla tastiera (STDIN), al monitor (STDOUT e STDERR); ma nulla ci vieta di reindirizzare uno solo di questi flussi verso un file qualsiasi. Facciamo un esempio: ipotizziamo di voler indirizzare l'uscita (cioè il flusso di STDOUT) del comando ls al file pippo.txt; per fare questo diamo il comando:

#ls > pippo.txt

questo comando prenderà l'output di ls e lo inviarà al file pippo.txt.

Il reindirizzamento dell'output (STDOUT) si realizza con il simbolo '>'; quello dell'input (STDIN) con il simbolo '<' e quello del flusso di errore (STDERR) con il simbolo '2>'

Strumenti personali
Altre lingue