Il comando Linux rm: tutto ciò che devi sapere

Pubblicato: 2023-01-22
Laptop Linux che mostra un prompt bash
fatmawati achmad zaenuri/Shutterstock.com
Il comando rm consente di eliminare un file o una directory passandone il nome: "rm filename" o "rm -d directory". Puoi anche includere un percorso di directory. Se sono presenti file nella directory, utilizzare l'opzione -r "rm -r directory" per eliminare file e cartelle in modo ricorsivo.

Il comando Linux rm elimina file e directory. Per utilizzare questo strumento in modo sicuro, devi essere certo di cosa accadrà quando premi "Invio". Ecco cosa devi sapere.

Sommario

Qual è il comando rm in Linux?
Come eliminare i file con rm
Utilizzo di caratteri jolly con rm
Utilizzo interattivo di rm
Usando l'opzione rm Force
Eliminazione di elenchi con rm
Evitare errori durante l'utilizzo di rm
Quali DPI?

Qual è il comando rm in Linux?

Il comando Linux rm è principalmente per l'eliminazione dei file. È uno che la maggior parte delle persone incontra subito dopo aver iniziato a utilizzare Linux. Solo in virtù dell'essere un nuovo arrivato in Linux, è probabile che tu commetta degli errori. Creerai o copierai file per sbaglio, o con il nome sbagliato, o nel posto sbagliato. Fa tutto parte della curva di apprendimento della riga di comando. Le operazioni di pulizia per tali errori coinvolgono rm .

8 errori di battitura che devi davvero evitare su Linux
CORRELATI 8 errori di battitura che devi davvero evitare su Linux

Il comando rm può eliminare file, gruppi di file, directory o alberi di directory completi. Ecco perché deve essere usato con cautela. Usare rm non è difficile, ma la penalità per il fallimento è alta.

Quando un file viene eliminato con rm , non c'è più. Non viene spostato nel cestino. Viene cancellato immediatamente. Ciò non significa che dovresti evitare di usare rm . Ma per usarlo in sicurezza, devi essere consapevole di cosa può fare e assicurarti di usarlo correttamente.

Alcuni strumenti sono più pericolosi di altri e molto meno indulgenti verso gli errori. Ecco perché non c'è mai stato un film intitolato The Texas Wrench Massacre . rm non è una chiave inglese, è sicuramente una motosega.

Le persone usano le motoseghe tutto il giorno tutti i giorni e finché ne usano una in modo responsabile e consapevole, stanno bene. È lo stesso accordo con rm . Quando tiri fuori rm dalla tua borsa degli attrezzi, dovresti rallentare e controllare, quindi ricontrollare, la tua riga di comando.

Il comando rm è un eseguibile, non fa parte della shell. Quindi, anche se stiamo usando Bash qui, è il Linux rm standard, non un Bash rm speciale.

CORRELATO: Righe di comando: perché le persone si preoccupano ancora di loro?

Come eliminare i file con rm

Il modo più semplice per utilizzare rm è fornire il nome di un file che si desidera eliminare.

 rmconfig.gc 

Eliminare un singolo file passando il suo nome file a rm

Sei silenziosamente tornato alla riga di comando. rm adotta la classica posizione di Linux a bocca chiusa che se non si lamenta di nulla, puoi presumere che abbia fatto quello che hai chiesto. Fornendo un nome file come questo, rm cerca il file nella directory di lavoro corrente.

È possibile fornire più nomi di file sulla riga di comando. Puoi anche fornire un percorso di directory se un file che desideri eliminare non si trova nella directory corrente.

 rm memlog.sh /home/dave/dev-archive/config.gc 

Eliminazione di due file passando il nome del file e il percorso della directory a rm

Ancora una volta, non viene segnalato nulla se rm riesce a eliminare i file specificati.

CORRELATO: 37 importanti comandi di Linux che dovresti conoscere

Utilizzo di caratteri jolly con rm

I caratteri jolly consentono di specificare gruppi o raccolte di file senza dover elencare i singoli file nella riga di comando.

L'asterisco " * " rappresenta qualsiasi sequenza di caratteri, incluso nessuno. Il punto interrogativo “ ? ” rappresenta ogni singolo carattere.

Per verificare che i tuoi caratteri jolly corrispondano a ciò che ti aspetti, e niente di più, puoi usarli con ls prima di usarli con rm.

Per eliminare tutti i file PNG nella directory corrente, utilizzare "*.png". Ciò significa che qualsiasi sequenza di caratteri seguita da ".png" verrà abbinata. Quando i file sono stati cancellati, possiamo usare ls per verificare che siano spariti.

 ls *.png
 rm *.png
 ls *.png 

Utilizzando il carattere jolly asterisco per eliminare tutti i file con estensione file PNG

Sul nostro computer di prova, abbiamo due file nella directory corrente con nomi che iniziano con "config".

Siamo in grado di eliminare entrambi utilizzando il carattere jolly asterisco. Corrisponde a entrambi i file perché rm cerca nomi di file che iniziano con "config", seguito da qualsiasi sequenza di caratteri. Su un file, quella sequenza di caratteri è ".sl3", l'estensione del nome file. L'altro nome file non ha caratteri dopo "config", ma poiché l'asterisco corrisponde a qualsiasi carattere o nessun carattere , corrisponde anche a quel nome file.

 config*
 rm config*
 config* 

Utilizzo del carattere jolly asterisco per eliminare due file, uno con e uno senza, un'estensione di file

Puoi usare il punto interrogativo in coppia. Questo eliminerà i file che hanno estensioni di file di due caratteri esattamente.

 ls *.??
 rm *.??
 ls *.?? 

Utilizzo di due caratteri jolly punto interrogativo per eliminare file con estensioni di file di esattamente due caratteri

CORRELATO: 15 caratteri speciali che devi conoscere per Bash

Utilizzo interattivo di rm

Un modo sicuro per usare rm è costringerlo a chiedere conferma prima di eliminare ogni file. L'opzione -i (interattivo) ti consente di farlo. Quando aggiungi questa opzione alla riga di comando, rm ti chiederà prima di ogni eliminazione, dandoti la possibilità di scavalcare azioni che non avevi previsto.

Useremo l'opzione -i (interattiva) in questo comando. Cerca di eliminare tutti i file con un'estensione di file a carattere singolo.

 rm -i *.? 

Utilizzo interattivo di rm in modo che venga richiesto prima di ogni eliminazione

Ogni file corrispondente viene presentato a turno. Se rispondi "y" o "Y" il file viene eliminato. Se rispondi "n", il file viene conservato. Infatti, se rispondi con qualcosa di diverso da "y" o "y", il file viene trattenuto. Puoi semplicemente premere "Invio" e il file viene conservato.

Puoi esaminare rapidamente l'elenco di file, eliminando o saltando i file per selezionare quelli che desideri rimuovere. Come vedremo, puoi usare l'opzione i- (interattiva) con altre opzioni rm .

CORRELATO: I migliori laptop Linux per sviluppatori e appassionati

Usando l'opzione rm Force

Se si tenta di eliminare un file di sola lettura, rm chiede conferma prima di eliminare il file. Questa è una buona rete di sicurezza, ma che potrebbe diventare noiosa se hai molti file da eliminare.

 rm geonomi.sl3 

rm chiedendo all'utente di confermare che desidera eliminare un file di sola lettura

L'opzione -f (forza) indica a rm di non chiedere mai. Gli stai dicendo "Sì, elimina tutti i file che normalmente mi chiederesti". Impedisce inoltre a rm di lamentarsi di file inesistenti.

 rm -f geonomi.sl3 

Utilizzo dell'opzione -f (forza) per impedire a rm di richiedere informazioni sulle eliminazioni

L'opzione -f (force) viene spesso utilizzata quando si elimina un insieme nidificato di file e directory.

Eliminazione di elenchi con rm

Il comando rm può facoltativamente rimuovere anche le directory, insieme ai file che contengono. Questo è simile al comando rmdir , ma rmdir non può eliminare le directory con i file al loro interno. Elimina solo le directory vuote. Il comando rm può eliminare facilmente le directory che contengono file e altre directory.

Come eliminare file e directory nel terminale Linux
CORRELATI Come Eliminare File e Directory nel Terminale Linux

L'eliminazione di una directory è simile all'eliminazione di un file. Forniamo il nome della directory sulla riga di comando. Dobbiamo includere l'opzione -d (directory). Come abbiamo fatto quando stavamo cancellando i file, possiamo fornire il nome di diverse directory. Possiamo fornire un percorso alla directory che non si trova nella directory di lavoro corrente.

 rm -d vecchi progetti 

Utilizzo dell'opzione -d (directory) per eliminare una directory

Se la directory contiene file, questo fallirà.

Per eliminare una directory e il suo contenuto, utilizzare il flag -r (ricorsivo). Questo elimina la directory, i suoi file e tutte le directory nidificate che contiene.

 rm -d archivio
 rm -r archivio 

Utilizzo dell'opzione -r (ricorsiva) per eliminare una directory e i relativi file

Il secondo comando riesce.

Per passare rm in modalità motosega completa, possiamo combinare le opzioni -r (ricorsiva) e -f (forza). Questo dice a rm di eliminare in modo ricorsivo tutti i file e le directory in un albero di directory, anche se sono di sola lettura, e senza mai chiedercelo.

Sul nostro computer di prova, abbiamo una directory chiamata "codice migrato". Contiene file e un'altra directory chiamata "6502". La directory "6502" contiene anche i file e un'altra directory denominata "ASM". Ci sono anche dei file in quella directory. Alcuni dei file sono di sola lettura.

Includeremo anche il comando -v (verbose) in modo che rm ci dica cosa sta facendo.

 rm -rfv codice migrato 

Usando i flag -rfv per fare in modo che rm rimuova file e directory, anche file di sola lettura, senza chiedere conferma

Nell'output possiamo vedere che i file vengono rimossi e, quando sono vuoti, vengono rimosse anche le directory.

L'output dei flag -rfv che mostra i file che vengono eliminati e le directory che vengono eliminate una volta che sono vuote

Evitare errori durante l'utilizzo di rm

Gli spazi e altri caratteri strani nei nomi dei file possono presentare problemi. I nomi di file che iniziano con un trattino " - ", ad esempio, possono essere scambiati per opzioni della riga di comando. Se abbiamo un file chiamato "-contributors.txt", rm cercherà di elaborare il nome come una sequenza di opzioni della riga di comando.

Poiché rm non ha un'opzione chiamata " -c ", l'analisi della riga di comando fallisce e il file non viene cancellato. Per eliminare il file è necessario farlo precedere da "./" per fornire un percorso ad esso.

 rm-contributors.txt
 rm ./-contributors.txt 

Utilizzo di "./" per aggirare il problema dell'eliminazione di un file il cui primo carattere è un trattino

Anche gli spazi nei nomi dei file sono problematici. Citare l'intero nome del file o utilizzare il completamento con tabulazione per inserire il nome del file nella riga di comando per te, eseguendo l'escape degli spazi mentre lo fa. Se non usi nessuna di queste opzioni, rm tratterà ogni parte del nome del file come un singolo file.

Come gestire gli spazi nei nomi dei file su Linux
CORRELATO Come gestire gli spazi nei nomi dei file su Linux

Qui abbiamo due file, uno chiamato "backup" e uno chiamato "backup da eliminare". Possiamo dimostrare il problema con questi nomi di file, usando ls . Se proviamo a utilizzare ls sul file "backup da eliminare" e non eseguiamo l'escape o citiamo il nome del file, il comando fallisce.

 ls -hl backup da eliminare 

Tentativo di utilizzare ls su un file con spazi nel nome, senza citare la stringa o eseguire l'escape degli spazi

ls si lamenta di non riuscire a trovare i file chiamati "to" o "delete", ma trova un file chiamato "backup". Questo è ciò che farà anche rm . Si lamenterà di due file mancanti e quindi eliminerà il file chiamato "backup", che non è quello che volevamo.

 rm backup da eliminare 

Tentativo di utilizzare rm su un file con spazi nel nome, senza citare la stringa o eseguire l'escape degli spazi

rm pensa di funzionare con tre file, "backup", "to" e "delete". Si lamenta di non riuscire a trovare "to" e "delete", ma trova ed elimina silenziosamente "backup".

Citare il nome del file consente a rm di eliminare il file corretto.

 rm 'backup da eliminare' 

Usare rm con un nome file tra virgolette per superare il problema degli spazi nel nome file

Puoi anche eseguire l'escape degli spazi con le barre rovesciate " \ ", in questo modo:

 rm backup\ per\ eliminare 

Usare rm con un nome file con spazi sfuggiti per superare il problema degli spazi nel nome file

Se utilizzi il completamento tramite tabulazione per inserire i nomi dei file, questi verranno automaticamente sottoposti a escape, se necessario.

Quali DPI?

A differenza delle motoseghe del mondo reale, non ci sono dispositivi di protezione individuale che puoi usare con rm .

Quello che puoi fare è controllare la tua sintassi con ls prima di provarla con rm e utilizzare la modalità interattiva in modo da poter decidere cosa viene eliminato.

Oltre a questo, è pratica finché non ti senti a tuo agio e sicuro di te. Il modo più sicuro per farlo è copiare un mucchio di file sacrificali in una directory e fare pratica su quelli.

CORRELATO: Elimina file più vecchi di x giorni su Linux