### Introduzione al comando `rm` Il comando `rm` (remove) è usato per rimuovere file e directory nel sistema operativo Linux. È un comando potente e deve essere usato con cautela, poiché i file rimossi con `rm` di solito non finiscono nel cestino e possono essere difficili da recuperare. #### Sintassi di Base `rm [OPZIONE]... [FILE]...` ### Opzioni Comuni di `rm` - **`-f`, `--force`**: Forza l'eliminazione senza chiedere conferma, anche se i file sono protetti da scrittura. - Esempio: `rm -f miofile.txt` - **`-i`**: Chiede conferma prima di ogni eliminazione. Utile per prevenire cancellazioni accidentali. - Esempio: `rm -i altrofile.txt` - **`-r`, `-R`, `--recursive`**: Elimina directory e il loro contenuto in modo ricorsivo. Essenziale per rimuovere directory non vuote. - Esempio: `rm -r mia_directory/` - **`-v`, `--verbose`**: Mostra un messaggio per ogni file o directory che viene eliminato. - Esempio: `rm -v file1.txt file2.txt` - **`--preserve-root`**: Non cancella ricorsivamente la directory radice `/`. Questa opzione è attivata di default per sicurezza. - **`--no-preserve-root`**: Disabilita la protezione per la directory radice. **Estremamente pericoloso! Non usare mai con `-r` a meno che non si sappia esattamente cosa si sta facendo.** - Esempio: `rm -rf --no-preserve-root /` (DA NON ESEGUIRE MAI!) ### Esempi di Utilizzo #### Eliminare un singolo file `rm nomefile.txt` #### Eliminare più file `rm file1.txt file2.txt file3.doc` #### Eliminare file con pattern (wildcard) - Eliminare tutti i file `.txt` nella directory corrente: `rm *.txt` - Eliminare tutti i file che iniziano con `temp_`: `rm temp_*` #### Eliminare una directory vuota `rmdir mia_directory_vuota/` (Nota: `rmdir` funziona solo con directory vuote. Per directory non vuote, usa `rm -r`.) #### Eliminare una directory non vuota (e il suo contenuto) `rm -r mia_directory_non_vuota/` Per una rimozione forzata e ricorsiva (senza chiedere conferma): `rm -rf mia_directory_non_vuota/` **Attenzione:** Questo comando è molto potente e non chiede conferme. Usalo con la massima cautela. #### Eliminare file il cui nome inizia con un trattino `-` Se un file ha un nome che inizia con un trattino (es. `-miofile.txt`), `rm` potrebbe interpretarlo come un'opzione. Per ovviare a questo, usa `--` per indicare la fine delle opzioni: `rm -- -miofile.txt` Oppure specifica il percorso relativo: `rm ./-miofile.txt` #### Prompt di conferma interattivo Per eliminare più file e chiedere conferma per ognuno: `rm -i *.log` ### Sicurezza e Best Practices - **Doppio controllo:** Prima di eseguire `rm -rf`, specialmente su directory importanti, verifica sempre il percorso. - **Usa `ls`:** Prima di usare `rm` con pattern (wildcard), è buona pratica usare `ls` con lo stesso pattern per vedere quali file verranno selezionati. - Esempio: `ls *.txt` prima di `rm *.txt` - **Alias per la sicurezza:** Puoi creare un alias per `rm` nel tuo file `.bashrc` o `.zshrc` per includere sempre l'opzione `-i`: `alias rm='rm -i'` Dopo aver modificato il file, esegui `source ~/.bashrc` (o `.zshrc`) per applicare la modifica. - **Comando `shred`:** Per eliminare i file in modo sicuro (sovrascrivendo il loro contenuto per renderli irrecuperabili), considera l'uso di `shred`. - Esempio: `shred -u miofile_sensibile.txt` (l'opzione `-u` elimina il file dopo averlo sovrascritto)