Script rm bash
Maurizio Paolini
paolini a dmf.bs.unicatt.it
Gio 7 Feb 2002 10:13:28 UTC
> > rm $file
>
> Non e' il caso di metterci delle virgolette? Se un file ha degli spazi nel
> nome, rischi di cancellarne altri due che non c'entrano. E se un file si
> chiama "-rf mydir"... :-)
il problema degli spazi e' sicuramente delicato: le virgolette ci vogliono,
ma non sono sufficienti, poiche' il ciclo "for" becca comunque i due pezzi
del nome, in quel caso e quindi gia la variabile "$file" non e' corretta.
Come fare un ciclo 'corretto' e' un problema su cui discutere!
Per il secondo problema suggerisco di fare un 'rm -- "$file"'; il doppio
'-' (una notiva' introdotta solo relativamente di recente) permette di
dire a "rm" che non ci sono piu' opzioni.
Riguardo al problema degli spazi, ecco alcune linee che potrebbero essere
seguite:
1. filtrare "ls" con un "tr ' ' '#'" mettendo al posto di # un carattere
che si sa a priori che non compare mai. Non bello...
2. cambiare la variabile "IFS" in modo che venga usato il "\n" come unico
delimitatore; a quel punto mi pare che la cosa funzioni...
3. utilizzare in modo opportuno il comando "read" in una funzione bash
e passando l'elenco "$list" come standard input alla funzione.
4. Provare con "ls -Q", che racchiude tutti i nomi tra virgolette...
altre strade?
mp
Maggiori informazioni sulla lista
Lug
|