giovedì 21 ottobre 2010

Cancellare file e directory

Il comando per cancellare file e cartelle in Linux è rm (remove). In realtà rm cancella esclusivamente file, per le directory si dovrebbe utilizzare il comando rmdir (remove directory). Una forte limitazione di rmdir è la seguente: il comando cancella solo le directory vuote! Con rm, passando al comado gli argomenti giusti, si può allora superare la limitazione di rmdir.

Procediamo con ordine e occupiamoci dei file. La sintassi usata da rm è la seguente: rm nome_file, dove nome_file è il nome del file da cancellare. La rimozione del file riesce se e solo se l'utente che lancia il comando ha i permessi per farlo! L'argomento nome_file passato ad rm può essere un path sia assoluto che ralativo e, cosa più importante, può prevedere l'uso del carattere jolly *. Il carattere jolly ci permette di individuare e cancellare in un colpo solo più tipologie di file. Ad esempio, con il comando: rm *.jpg dico al terminale di Linux di cancellare tutti i file con estensione jpg (immagini) presenti nella directory di lavoro.

A differenza dell'interfaccia grafica che, se usata per cancellare file, sposta i file cancellati nel cestino, il comando rm elimina i file dal file system senza possibilità di recupero. rm non ha un cestino! Un file cancellato con rm può essere recuperato solo attraverso particolari software e sotto precise condizioni: i settori del disco precedentemente occupati dal file cancellato non devono essere sovrascritti da nuovi file. Prestate, allora, molta attenzione nell'uso di rm, soprattutto se state usando il terminale con i permessi dell'utente root!

Una delle opzioni di rm utili proprio ad evitare la cancellazione di file importanti è l'opzione -i (interactive). Con rm -i nome_file il terminale svolge il comando in maniera interattiva, ogni operazione di cancellazione è preceduta da una domanda di conferma.

Talvolta, quando il nome del file da cancellare contiene spazi vuoti, è utile racchiudere con le virgolette l'argomento nome_file passato al comando rm, ecco un esempio: rm "nome file". Senza questa precauzione il comando rm interpreta gli argomenti passati (in questo caso il nome del file) in modo errato. rm cercherà di cancellare i file nome e file!

E per le directory? Se rmdir si rifiuta di cancellarle, se non vuote, come fare? La soluzione al problema è l'uso del comando rm con gli argomenti -Rf, dove R (recursive) dice ad rm di cancellare ricorsivamente tutte le directory contenute mentre f (force) dice ad rm di eseguire il comando senza far storie (senza questa opzione il comando vi dirà che le cartelle non sono vuote!). Pertanto, con: rm -Rf /home/user/Downloads/mp3/ cancellerò la cartella (e tutti i file contenuti) mp3!

Vediamo se avete capito, cosa fa il comando: rm -Rf /* ?

Il comando mostrato sopra, se eseguito dall'utente root, cancella tutte le directory del file systeme! Ad rm viene passato come argomento la directory radice e il carattere jolly! Fate molta attenzione a quello che scrivete!


Nessun commento:

Posta un commento