Programmazione della shell Bash
Sintesi dei comandi principali
In questa appendice viene riportata una descrizione sintetica dei principali comandi del linguaggio Bash (comandi interni) e di alcuni dei principali programmi ed utility presenti tipicamente nella configurazione di base dei sistemi UNIX/Linux (comandi esterni). Per una descrizione più ampia e dettagliata dei comandi si suggerisce di fare riferimento comunque alle pagine di manuale UNIX o ai testi citati tra i riferimenti bibliografici. Ricordiamo che le pagine del manuale UNIX sono accessibili utilizzando il comando “man” seguito dal comando di cui si desidera visualizzare la descrizione (es.: “man bash”).
Comandi interni
- alias
 -  Consente di definire un sinonimo di un comando o di un'istruzione complessa o di ridefinire un comando (es.: “alias ls='ls -F'”).
 
- bg
 -  Consente di eseguire in background un comando.
 
- break
 -  Interrompe l'esecuzione del blocco di istruzioni all'interno di una struttura di controllo condizionale o iterativa.
 
- case / esac
 -  È una struttura di controllo condizionale che consente di valutare il contenuto di una variabile ed eseguire istruzioni diverse per ciascun valore.
 
- cd
 -  Cambia la directory corrente del filesystem in cui viene eseguito lo shell script; se non viene specificato nessun argomento sulla linea di comando, definisce come directory corrente la home directory dell'utente, altrimenti si sposta nella directory specificata come argomento.
 
- continue
 -  Prosegue l'esecuzione di un ciclo dall'iterazione successiva (o dalla n-esima iterazione, se n viene specificato come argomento).
 
- do / done
 -  Delimitano il blocco di istruzioni che deve essere eseguito nell'ambito di una struttura di controllo iterativa (un ciclo).
 
- echo
 -  Visualizza in output una stringa di testo costituita da caratteri alfanumerici e variabili; con l'opzione “-n” non va a capo dopo aver visualizzato l'output.
 
- eval
 -  Esegue il comando ottenuto concatenando tutti i parametri passati come argomento.
 
- exec
 -  Esegue il comando specificato come argomento sostituendo la shell in esecuzione: non viene creato un nuovo processo, ma il processo corrente viene sostituito da quello specificato come argomento del comando exec.
 
- exit
 -  Termina l'esecuzione dello script e restituisce un return code numerico.
 
- export
 -  Definisce una variabile d'ambiente, ovvero esporta una variabile o una funzione definita nell'ambito dello shell script, nell'ambiente entro cui è stato lanciato lo script ed i comandi eseguiti successivamente nell'ambito della stessa shell; contestualmente all'esportazione di una variabile può anche essere impostato il valore della variabile stessa.
 
- fg
 -  Riporta in foreground il processo il cui job id è passato al comando come argomento.
 
- for
 -  Esegue più volte il blocco di istruzioni delimitato dalle parole chiave “do” e “done”; il ciclo viene ripetuto per ciascun valore assunto da una variabile di controllo in una lista di valori o in un intervallo numerico. 
 
- function
 -  Definisce una funzione identificata da un nome univoco nell'ambito dello script; il corpo della funzione è delimitato dalle parentesi graffe.
 
- if / then / else / fi
 -  Definisce una struttura di controllo condizionale: se la condizione riportata dopo l'istruzione “if” risulta vera, vengono eseguite le istruzioni che seguono la parola chiave “then”, altrimenti, se specificate, vengono eseguite le istruzioni riportate dopo la parola chiave “else”; la struttura di controllo è terminata dalla parola chiave “fi”.
 
- jobs
 -  Visualizza l'elenco dei “job id” dei processi attivi nell'ambito della shell corrente entro cui viene eseguito lo script.
 
- kill
 -  Invia il segnale specificato come primo argomento del comando ai processi i cui “job id” o “process id” sono passati come argomenti successivi.
 
- local
 -  Definisce le variabili specificate come argomento; nell'ambito di una funzione definita in uno script limita lo scope alla funzione stessa delle variabili specificate argomento.
 
- printf
 -  Stampa in output (o assegna ad una variabile) una stringa il cui formato viene specificato come primo argomento, che può essere costituita anche dal valore delle variabili riportate di seguito.
 
- read
 -  Legge da standard input una sequenza di caratteri contenente delle “parole” (o dei valori) separati da spazi; la prima parola viene assegnata alla prima variabile riportata come argomento del comando, la seconda alla seconda variabile e così via.
 
- return
 -  Termina l'esecuzione di una funzione e restituisce un valore numerico, specificato come primo argomento, come codice di ritorno della funzione stessa.
 
- select
 -  Realizza un ciclo infinito per la gestione di un menù di scelte interattivo visualizzato sul terminale dell'utente (standard output).
 
- shift
 -  Rinomina i parametri passati come argomento allo script o alla funzione con i nomi $1, $2, ... scartando i primi n parametri (se n è fornito come argomento) oppure soltanto il primo, se nessun argomento viene fornito al comando.
 
- source / .
 -  Consente di leggere in input e di eseguire lo shell script contenuto nel file il cui nome viene passato come argomento al comando.
 
- test / [
 -  Valuta l'espressione passata come argomento e restituisce il valore vero o falso.
 
- times
 -  Stampa il tempo utente ed il tempo macchina impiegato dallo script fino all'esecuzione del comando stesso.
 
- type
 -  Accetta una stringa come argomento e visualizza in output un messaggio che indica se la stringa corrisponde ad un comando interno (built-in) di Bash, un comando esterno, un alias, una parola chiave di Bash, ecc.
 
- unalias
 -  Annulla l'impostazione di un alias definito in precedenza.
 
- unset
 -  Elimina le variabili o le funzioni precedentemente definite, specificate come argomento del comando.
 
- until
 -  Esegue il blocco di istruzioni delimitato dalle parole chiave “do” e “done” se la condizione logica riportata di seguito risulta falsa.
 
- wait
 -  Attende che termini l'esecuzione del processo con “process id” o “job id” specificato come argomento del comando.
 
- while
 -  Esegue il blocco di istruzioni delimitato dalle parole chiave “do” e “done” se la condizione logica riportata di seguito risulta vera.
 
Comandi esterni
Di seguito è riportata una descrizione sintetica di alcuni dei principali comandi esterni presenti nella maggior parte dei sistemi operativi UNIX.
- awk
 -  Un interprete di un linguaggio per l'elaborazione di stringhe.
 
- cc / gcc
 -  Compilatore per tradurre dei programmi in formato sorgente scritti in linguaggio C, in programmi eseguibili scritti in linguaggio macchina. Su alcuni sistemi è presente il compilatore GNU GCC (attivabile con comando “gcc”) il cui funzionamento è grosso modo analogo a quello del compilatore C standard.
 
- chmod
 -  Modifica i permessi di accesso ad un file, una directory o, ricorsivamente, a tutti i file e le sottodirectory contenute nella directory specificata sulla riga di comando (es.: “chmod 755 script.sh”).
 
- clear
 -  Cancella il contenuto dello schermo del terminale dell'utente.
 
- cp
 -  Copia un file (sorgente) su un altro (target); se il secondo file (il target) non esiste, viene creato, in caso contrario viene sostituito con il contenuto del file sorgente.
 
- cut
 -  Taglia alcuni “campi” dello standard input o del file specificato sulla linea di comando e li stampa in output.
 
- date
 -  visualizza in output la data corrente; l'output può essere adattato riportando sulla riga di comando il simbolo “+” seguito dalle opzioni di visualizzazione della data (es.: “date +%d/%m/%Y”).
 
- du
 -  Disk Usage, visualizza la dimensione dei file e delle directory contenute nella directory corrente o nella directory specificata sulla linea di comando; con l'opzione “-k” viene utilizzata l'unità di misura KByte.
 
- env
 -  Visualizza o imposta il valore delle variabili d'ambiente con cui viene configurata la shell.
 
- grep
 -  Cerca le righe che corrispondono ad un determinato pattern nello standard input o nei file specificati sulla riga di comando.
 
- gzip
 -  Una utility per comprimere file; il file originale viene eliminato lasciando sul filesystem solo la versione compressa, con estensione “.gz”; per riportare il file nella sua forma originale, non compressa, si può usare il comando “gunzip”, equivalente al comando “gzip -d”.
 
- head
 -  Visualizza le prime righe della sequenza ricevuta in input o del file specificato sulla riga di comando; con l'opzione “-n” vengono visualizzate le prime n righe.
 
- ls
 -  Visualizza l'elenco dei file presenti nella directory corrente o nella directory specificata sulla riga di comando.
 
- mv
 -  Sposta o rinomina un file o una directory.
 
- rm
 -  Elimina dal filesystem il file specificato.
 
- rmdir
 -  Elimina dal filesystem la directory specificata.
 
- sed
 -  Stream editor, consente di manipolare stringhe utilizzando espressioni regolari.
 
- seq
 -  Visualizza una sequenza di numeri interi.
 
- sleep
 -  Introduce una pausa di n secondi; n è un numero intero maggiore di zero specificato sulla riga di comando.
 
- sort
 -  Restituisce in output ordinate le righe fornite in input o presenti nel file specificato sulla riga di comando.
 
- tail
 -  Visualizza le ultime righe della sequenza ricevuta in input o del file specificato sulla riga di comando; con l'opzione “-n” vengono visualizzate le ultime n righe, mentre con l'opzione “-f” viene mantenuto aperto il canale di input visualizzando continuamente le ultime righe ricevute in input (utile ad esempio per controllare un file di log attivo).
 
- touch
 -  Crea un file vuoto con il nome specificato sulla riga di comando se non esiste, altrimenti aggiorna la data e l'ora di ultima modifica del file con l'ora corrente.
 
- uniq
 -  Visualizza su standard output l'input acquisito da un file specificato sulla riga di comando o ricevuto da standard input, eliminando le righe ripetute. 
 
- wc
 -  Esegue il conteggio dei caratteri, delle parole e delle righe fornite in input o presenti nel file specificato sulla riga di comando; con l'opzione “-l” conta le linee.
 
- xargs
 -  Esegue il comando riportato sulla command line utilizzando le stringhe ricevute su standard input come parametri del comando.
 
Author: Marco Liverani - Last modified: Sunday November 20, 2011 - URI: http://www.aquilante.net/bash/sintesiComandi.shtml