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