terminal Brace expansionBrace expansion

Di Ivan Agliardi | Nov 25, 2008
Stampa questo post Stampa questo post Articolo originale

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}

Related posts

Tags: Shell

Post correlati

Lascia un commento

Se vuoi inserire un commento, per favore completa il form sottostante.

Nome (obbligatorio)

Email (obbligatorio)

Sito Web

Commenti

© 2008 - 2009 Tuttolinux - novità ed articoli dal mondo del pinguino !
Tutti i contenuti © dei rispettivi autori. Leggi questo per ulteriori informazioni.
Creative Commons LicenseIl contenuto di questo sito web è pubblicato sotto una Licenza Creative Commons.

Warning: stristr() [function.stristr]: Empty delimiter in /home/.nine/luckylinux/tutto-linux.com/wp-content/plugins/wassup/wassup.php on line 2093