[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RiminiLUG-General] bash redirezione I/O PIPE e filtri



On 29/04/2011 21:54, Filippo Giunchedi wrote:
[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

Grande Filippo!
E' un piacere risentirti.... e per di più con un favoloso concorso a premi :D

Adesso ho sonno ma domani provo a vedere se l'idea che ho corrisponde al vero. Dobbiamo inviarti la soluzione in busta elettronica chiusa? La vuoi in file txt o azw? ;)

Ivan