Ceci n'est pas un blog

Blog personale di Ivan Agliardi con pagine di informatica, linguaggi, idee…

Brace expansion

Rispondo qui ad una richiesta di aiuto che ho ricevuto la scorsa settimana e a cui non ho sino ad ora avuto il tempo di rispondere. Mi viene richiesto un consiglio su uno script in bash che processa una serie di directory e ne crea temporaneamente altre in /tmp. Senza scendere nei dettagli del caso specifico, per generare automaticamente liste o array di directory ci viene in aiuto la brace expansion. Si tratta di un particolare meccanismo di bash con cui è possibile generare elenchi arbitrari di nomi di file o directory. In questo senso è simile alla pathname expansion, anche se quest’ultima è vincolata all’esistenza del file e/o della directory in questione, mentre con brace expansion questo limite non è previsto.

La sintassi delle brace expansion è molto semplice e prevede che vengano elencate tra parentesi graffe stringa che verranno sostituite nella medesima posizione all’interno stringa principale, generando così le varianti che ci servono. Come sempre, un esempio pratico vale più di mille spiegazioni:

a{b,c,d}e

si espande in:

  • abe
  • ace
  • ade

La brace expansion ha priorità su tutte le altre expansion e deve contenete parentesi graffe di apertura e chiusura e almeno un separatore (virgola).

Ecco dunque la riga di codice mancante allo script di cui sopra:

/bin/mkdir /tmp/{dir_main,dir_all,dir_tmp_1,dir_tmp_2,dir_tmp_3}

A proposito di Ivan Agliardi

Ho immaginazione e creatività, ma non sono un artista. Faccio interagire tra loro aziende dando vita a nuove imprese, ma non sono un imprenditore. Mi occupo da oltre 15 anni di server Linux, applicazioni web, database, domini, hosting, housing, sicurezza informatica e sistemi embedded, ma non sono un tecnico. Faccio SEO, SEM, SMM e fornisco contenuti attraverso i miei copyrighter, ma non sono un uomo marketing. Ora ho di nuovo un blog, ma non sono un blogger. Sono solo un umanista e un informatico della prima ora. E mi circondo di gente con le palle :)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ivan Agliardi

Ivan Agliardi