| Guida avanzata di scripting Bash: Un'approfondita esplorazione dell'arte dello scripting di shell | ||
|---|---|---|
| Indietro | Capitolo 17. Espressioni Regolari | Avanti |
Bash, di per sé, non è in grado di riconoscere le Espressioni Regolari. Negli script, sono i comandi e le utility -- come sed e awk -- che interpretano le ER.
Bash, invece, esegue l'espansione del nome del file [1] -- un processo conosciuto come "globbing" -- che, però, non usa la serie standard di caratteri delle ER, ma riconosce ed espande i caratteri jolly. Il globbing interpreta i caratteri jolly standard * e ?, liste di caratteri racchiuse tra parentesi quadre ed alcuni altri caratteri speciali (come ^, che nega il senso di una ricerca). Esistono, tuttavia, alcune importanti limitazioni nell'impiego dei caratteri jolly. Stringhe che contengono l'* non verificano i nomi dei file che iniziano con un punto, come, ad esempio, .bashrc. [2] In modo analogo, il ? ha un significato diverso da quello che avrebbe se impiegato in una ER.
bash$ ls -l
total 2
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 a.1
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1
-rw-rw-r-- 1 bozo bozo 466 Aug 6 17:48 t2.sh
-rw-rw-r-- 1 bozo bozo 758 Jul 30 09:02 test1.txt
bash$ ls -l t?.sh
-rw-rw-r-- 1 bozo bozo 466 Aug 6 17:48 t2.sh
bash$ ls -l [ab]*
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 a.1
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1
bash$ ls -l [a-c]*
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 a.1
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1
bash$ ls -l [^ab]*
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1
-rw-rw-r-- 1 bozo bozo 466 Aug 6 17:48 t2.sh
-rw-rw-r-- 1 bozo bozo 758 Jul 30 09:02 test1.txt
bash$ ls -l {b*,c*,*est*}
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 b.1
-rw-rw-r-- 1 bozo bozo 0 Aug 6 18:42 c.1
-rw-rw-r-- 1 bozo bozo 758 Jul 30 09:02 test1.txt
|
Bash esegue l'espansione del nome del file sugli argomenti passati da riga di comando senza il quoting. Il comando echo dimostra questa funzionalità.
bash$ echo * a.1 b.1 c.1 t2.sh test1.txt bash$ echo t* t2.sh test1.txt |
![]() | È possibile modificare il modo in cui Bash interpreta
i caratteri speciali nel globbing. Il comando set -f
disabilita il globbing e shopt,
con le opzioni |
Vedi anche Esempio 10-4.
| [1] | Espansione del nome del file significa completare un nome di file che contiene caratteri speciali. Per esempio, esempio.??? potrebbe espandersi a esempio.001 e/o esempio.txt. | |
| [2] | L'espansione del nome del file può verificare i nomi di file che iniziano con il punto, ma solo se il modello lo include esplicitamente con il suo valore letterale.
|