Rm (Unix)
# Rm (Unix)

«Just don't create a file called -rf. :-)»

(Larry Wall, 1991)

rm (abbreviazione dalla lingua inglese di remove, rimuovi) è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX, che cancella file e directory dal file system, posto che si abbiano i permessi necessari.

Più precisamente, rm rimuove uno o più collegamenti fisici, per cui non è detto che ciò comporti anche la rimozione immediata dei dati e la conseguente liberazione dello spazio su memoria di massa. Ad esempio ciò non avviene se vi sono altri collegamenti fisici agli stessi dati, o se il file o la directory sono al momento in uso da qualche processo.

Al contrario del comando rmdir, rm è in grado di cancellare anche directory che non sono vuote, cancellandone prima ricorsivamente il contenuto.

Da notare che la possibilità di rimuovere un file è data non tanto dai permessi sul file stesso, quanto dai permessi (di scrittura) della directory che lo contiene, in quanto ciò che viene realmente modificato è appunto la directory che lo contiene.

## Sintassi

La sintassi generale del comando rm è:

I parametri arg indicano i nomi dei file e/o delle directory da rimuovere.

Il doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.

Tra le opzioni di uso comune vi sono:

### -r oppure -R

    Rimuove ricorsivamente il contenuto delle directory specificate ed anche le directory stesse.

### -i

    Richiede conferma per ogni cancellazione.

### -f

    Ignora file non esistenti e disabilita ogni richiesta di conferma (dall'inglese force, forza nel senso di forzare).

rm è spesso utilizzato con l'alias di "rm -i" per evitare cancellazioni accidentali; se in questo caso si volesse cancellare un gran numero di file senza la richiesta di conferma, si può annullare l'effetto dell'opzione -i specificando anche l'opzione -f.

rm -rf (e varianti, "rm -rf /", "rm -rf *", e altre) sono frequentemente utilizzate in scherzi e aneddoti su disastri in ambienti Unix: la variante rm -rf /, infatti, se utilizzata da un amministratore (root) causerebbe la cancellazione dei contenuti in ogni file system montato sul computer. In realtà, questo comando non funziona più già dal 2006, quando la versione 6.4 di GNU Core Utilities ha introdotto l'opzione --preserve-root, ormai abilitata in modo predefinito nelle distribuzioni più diffuse.

rm può essere usato insieme a xargs per rimuovere i file elencati in un file di testo o determinati tramite il comando find, posto che i nomi dei file non contengano spazi, apici o virgolette (che sono trattati in maniera speciale da xargs). Ad esempio:

