Programmare con la shell Bash
I fondamentali su bash
Di seguito vedremo di capire l'uso di metacaratteri, operatori set, espansione delle parentesi graffe altri caratteri speciali
Metacaratteri e operatori SET
Gli operatori a metacaratteri di bash sono *, ? e gli operatori set sono [SET] e [!SET].
* viene tradotto dall'interprete bash nell' espressione "qualsiasi stringa di caratteri".
? viene tradotto in "UN carattere qualsiasi".
Nel caso di una directory contenente i seguenti file:
$ls
bash boom bnew bgrep
bin big bimore bfile
bdiff biless bipo bipinfo
Il comando ls bi* corrisponde a: ls bin big biless bimore bipo bipinfo
Il comando ls bi? corrisponde a: ls bin big
Per quanto riguarda gli operatori set, questi consentono di utilizzare sia una gamma sia un insieme disguinto di caratteri.
Per specificare una gamma completa di caratteri basta inserire un trattino tra i caratteri:
Il set [a-h], per esempio include tutti i caratteri da "a" ad "h" in lettere minuscole.
Per indicare insiemi disgiunti di caratteri basta inserire la virgola, ad esempio il set per indicare la gamma di caratteri tra "a" e "h" e tra "w" e "z" è [a-h,w-z].
Per cercare alcuni caratteri si usa invece la seguente notazione: [abcd].
L'operatore "!" specifica di includere tutto ciò che non è compreso nel set. Ad esempio se voglio includere tutte le consonanti è possibile usare il seguente set : [!aeiou]
Vediamo ora qualche esempio dei metacaratteri all'interno di comandi unix/linux.
Esempi sull'utilizzo dei metacaratteri e operatori set
1. Vogliamo elencare tutti i file della directory che hanno come prima lettera "b" ,come seconda lettera una vocale e come terza lettera una consonante.
ls b[aeiou][!aeiou]*
Considerando la directory elencata sopra, i file che otterremo elencati con il comando appena scritto saranno:
bash
bin
big
biless
bimore
bipo
bipinfo
2. Vogliamo elencare tutti i file della directory che hanno nel loro nome hanno almeno una cifra numerica compresa tra 0 e 9.
ls *[0-9]*
Considerando la directory elencata sopra, nessun nome file corrisponde alla nostra ricerca.
Espansione delle parentesi graffe
E' possibile costruire un modello di nome anche utilizzando le parentesi graffe. Guardate questo esempio:
$ echo z{eu, i, on, ae}s
L 'output di questo comando sarà:
zeus zis zons zaes
L'uso delle parentesi può inoltre essere anche nidificato:
$ echo z{e{u, e, i}, i, on}s
L 'output di questo comando sarà:
zeus zees zeis zis zons zaes
Altri caratteri speciali
Quelli visti fino ad ora rappresentano solo quattro esempi di caratteri speciali di bash, ce ne sono altri, vediamone qualcun'altro:
Carattere Descrizione
< Redireziona l'input
> Redireziona l'output
( Inizia il subshell
) Termina il subshell
| Pipe
& Esegue il comando in background
{ Inizia il blocco comandi
} Termina il blocco comandi
; Separatoredi comando
# Commento
$ Espressione variabile
Arrivederci alla prossima con il primo script bash..
|