linux user group brescia

immagine del castello

Archivio della mailing list

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