[i lettori mi scuseranno in anticipo se intervengo solo per fare il
rompiscatole! :)]
On Fri, Apr 29, 2011 at 04:11:01PM +0200, Giovanni Pasini wrote:
Ad un certo punto c'è l'esempio alla redirezione di un comando
interpretato da echo e inviato a bash questo:
for i in *.c.txt; do echo mv $i $(basename $i .c.txt).c; done | bash
cito dal link [1]:
Questo è un modo abbastanza generale (e sicuro) di procedere. Se
dovete dare una sequenza di comandi simili costruite un ciclo for che
faccia l’echo di un comando costruito a partire dalla variabile del
ciclo. Solo quando sarete sicuri di non aver sbagliato, fate il pipe
in una shell.
attenzione che la shell e' un oggetto alquanto insidioso e ci vuole non poca
attenzione a creare script robusti (la advanced bash shell scripting guide che
ti ha linkato Ivan contiene molti spunti).
Un esercizio interessante da fare per chi ci si vuole cimentare e' provare il
comando sopra per rinominare un file che contiene degli spazi (per aiutarti
usa l'opzione -x della shell).
Ad esempio:
touch 'foo bar.c.txt'
for i in *.c.txt; do echo mv $i $(basename $i .c.txt).c; done | bash
chi conosce la soluzione (senza usare internet!) aspetti qualche giorno a
postarla cosi' da dare modo di lavorarci, in palio c'e' una o piu' birre per
quando torno per chi offre la soluzione completa di spiegazione del perche' e
percome :)
filippo