<Precedenti | Contenuti | Succ.>
Espansione del tutore
Forse l'espansione più strana si chiama espansione del tutoreCon esso, è possibile creare più stringhe di testo da un modello contenente parentesi graffe. Ecco un esempio:
[io@linuxbox~]$ eco Anteriore-{A,B,C}-Posteriore
Davanti-A-Dietro Davanti-B-Dietro Davanti-C-Dietro
[io@linuxbox~]$ eco Anteriore-{A,B,C}-Posteriore
Davanti-A-Dietro Davanti-B-Dietro Davanti-C-Dietro
I modelli da espandere con rinforzo possono contenere una parte iniziale chiamata preambolo e una parte finale chiamata poscrittoL'espressione tra parentesi graffe può contenere un elenco di stringhe separate da virgole oppure un intervallo di numeri interi o singoli caratteri. Il pattern non può contenere spazi vuoti incorporati. Ecco un esempio che utilizza un intervallo di numeri interi:
[io@linuxbox~]$ eco Numero_{1..5}
Numero_1 Numero_2 Numero_3 Numero_4 Numero_5
[io@linuxbox~]$ eco Numero_{1..5}
Numero_1 Numero_2 Numero_3 Numero_4 Numero_5
Gli interi possono anche essere zero-imbottito così:
[io@linuxbox~]$ eco {01..15}
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
[io@linuxbox~]$ eco {01..15}
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
[io@linuxbox~]$ eco {001..15}
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015
[io@linuxbox~]$ eco {001..15}
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015
Una serie di lettere in ordine inverso:
[io@linuxbox~]$ eco {Z..A}
ZYXWVUTSRQPONMLKJIHGF EDCBA
[io@linuxbox~]$ eco {Z..A}
ZYXWVUTSRQPONMLKJIHGF EDCBA
Le espansioni delle parentesi graffe possono essere annidate:
[io@linuxbox~]$ eco a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b
[io@linuxbox~]$ eco a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b
A cosa serve? L'applicazione più comune è quella di creare elenchi di file o directory da creare. Ad esempio, se fossimo fotografi e avessimo una vasta collezione di immagini che volessimo organizzare in anni e mesi, la prima cosa che potremmo fare sarebbe creare una serie di directory denominate nel formato numerico "Anno-Mese". In questo modo, i nomi delle directory saranno ordinati cronologicamente. Potremmo digitare un elenco completo delle directory, ma sarebbe molto lavoro e anche questo è soggetto a errori. Invece, potremmo fare così:
[io@linuxbox~]$ Foto mkdir
[io@linuxbox~]$ cd Foto
[me@linuxbox Foto]$ mkdir {2007..2009}-{01..12}
[me@linuxbox Foto]$ ls
2007-01 | 2007-07 | 2008-01 | 2008-07 | 2009-01 | 2009-07 |
2007-02 | 2007-08 | 2008-02 | 2008-08 | 2009-02 | 2009-08 |
2007-03 | 2007-09 | 2008-03 | 2008-09 | 2009-03 | 2009-09 |
2007-04 | 2007-10 | 2008-04 | 2008-10 | 2009-04 | 2009-10 |
2007-05 | 2007-11 | 2008-05 | 2008-11 | 2009-05 | 2009-11 |
2007-06 | 2007-12 | 2008-06 | 2008-12 | 2009-06 | 2009-12 |
Davvero furbo!