Il comando Linux rm elimina file e directory. Per utilizzare questo strumento in modo sicuro, devi essere sicuro di cosa accadrà quando premi "Invio". Ecco cosa devi sapere.
Qual è il comando rm in Linux?
Il comando Linux rm è principalmente per l'eliminazione dei file. È una delle cose che la maggior parte delle persone incontra subito dopo aver iniziato a utilizzare Linux. Solo in virtù del fatto di essere un nuovo arrivato in Linux, è probabile che tu commetta degli errori. Creerai o copierai file per errore, con il nome sbagliato o nella posizione sbagliata. Fa tutto parte della curva di apprendimento per la riga di comando. Le pulizie per tali errori includono rm.
Il comando rm può eliminare file, gruppi di file, directory o interi alberi di directory. Questo è il motivo per cui dovrebbe essere usato con cautela. Usare rm non è difficile, ma la penalità per il fallimento è alta.
Quando un file viene eliminato con rm, scompare. Non viene spostato nel cestino. Viene cancellato all'istante. Questo 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ù rischiosi di altri e meno tolleranti agli errori. Ecco perché non c'era 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 affare con rm. Quando estrai rm dalla tua borsa degli attrezzi, dovrebbe rallentare e controllare e quindi ricontrollare sulla 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.
Come eliminare i file usando rm
Il modo più semplice per utilizzare rm è fornire il nome del file che si desidera eliminare.
rmconfig.gc
Si torna silenziosamente alla riga di comando. rm assume la classica posizione sviata di Linux secondo cui se non si lamenta di nulla, puoi presumere che abbia fatto ciò 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. È inoltre possibile fornire un percorso di directory se il file che si desidera eliminare non si trova nella directory corrente.
rm memlog.sh /home/dave/dev-archive/config.gc
Ancora una volta, non viene segnalato nulla se rm è riuscito a eliminare i file selezionati.
Usa caratteri jolly con rm
I caratteri jolly consentono di specificare gruppi di file senza dover elencare singoli file nella riga di comando.
Un asterisco "*" rappresenta qualsiasi stringa di caratteri, incluso nessuno. punto interrogativo "?" rappresenta ogni singolo carattere.
Per verificare che i tuoi caratteri jolly corrispondano a ciò che ti aspetti che siano, 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 vengono eliminati, possiamo usare ls per verificare se sono spariti.
ls*.png
rm*.png
ls*.png
Sul nostro computer di prova, abbiamo due file nella directory corrente con nomi che iniziano con "config".
Possiamo ometterli entrambi usando 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. In 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 oa nessun carattere, corrisponde anche a quel nome file.
config*
rmconfig*
config*
Puoi usare il punto interrogativo in coppia. Questo eliminerà i file che hanno esattamente due estensioni di file di lettera.
ls*.??
rm*.??
ls*.??
Usa rm in modo interattivo
Il modo sicuro per usare rm è costringerlo a chiedere conferma prima di eliminare ogni file. L'opzione -i (interattiva) ti consente di farlo. Quando aggiungi questa opzione alla riga di comando, rm ti chiederà prima di ogni eliminazione, dandoti la possibilità di saltare le azioni che non intendevi.
Useremo l'opzione -i (interattiva) in questo comando. Tenta di eliminare tutti i file con estensione di un carattere.
rm -i *.?
Ogni file corrispondente viene presentato a turno. Se rispondi "Y" o "Y", il file verrà eliminato. Se rispondi "n", il file viene conservato. Infatti, se rispondi con qualcosa di diverso da "y" o "y", il file viene preservato. Puoi semplicemente premere invio e il file viene preservato.
Puoi scorrere rapidamente l'elenco dei file, eliminare o saltare i file per scegliere quali file rimuovere. Come vedremo, puoi usare l'opzione -i (interattivo) con le altre opzioni rm.
usando l'opzione rm force
Se si tenta di eliminare un file di sola lettura, rm chiederà conferma prima di eliminare il file. Questa è una buona rete di sicurezza, ma può diventare noiosa se hai molti file da eliminare.
rm geonomi.sl3
L'opzione -f (forza) indica a rm di non chiedere mai. Gli dici “Sì, cancella tutti i file che di solito mi chiedi”. Impedisce inoltre a rm di lamentarsi della mancanza di file.
rm -f geonomi.sl3
L'opzione -f (force) viene spesso utilizzata quando si elimina un insieme nidificato di file e directory.
Elimina le directory 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 contenenti file. Elimina solo le directory vuote. Il comando rm può eliminare facilmente le directory contenenti file e altre directory.
Cancellare una directory è come cancellare 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 i nomi di diverse directory. Possiamo fornire un percorso a una directory che non esiste nella directory di lavoro corrente.
rm -d vecchi progetti
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 di nidificazione che contiene.
rm -d archivio
rm -r archivio
Il secondo comando è riuscito.
Per passare da rm alla modalità full saw, possiamo combinare le opzioni -r (ricorsiva) e -f (forza). Questo dice a rm di eliminare in modo ricorsivo tutti i file e le cartelle nell'albero delle directory, anche se sono di sola lettura, e senza chiedere conferma.
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 file anche in questa directory. Alcuni file sono di sola lettura.
Includeremo anche il comando -v (verbose) in modo che rm ci dica cosa fare.
rm -rfv codice migrato
Nell'output possiamo vedere che i file sono stati rimossi e quando sono vuoti, anche le directory vengono rimosse.
Evita errori quando usi rm
Spazi e altri strani caratteri nei nomi dei file possono causare problemi. I nomi di file che iniziano con un trattino "-", ad esempio, possono essere confusi con le opzioni della riga di comando. Se abbiamo un file chiamato "-contributors.txt", rm cercherà di elaborare il nome come una stringa 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 eliminato. Per eliminare un file, devi prefissarlo con un "./" per fornire un percorso ad esso.
rm-contributors.txt
rm./-contributors.txt
Anche gli spazi nei nomi dei file sono un problema. Cita l'intero nome del file o usa la tabulazione per inserire il nome del file sulla riga di comando per te stesso, evitando gli spazi mentre lo fai. Se non usi nessuna di queste opzioni, rm tratterà ogni parte del nome del file come un singolo file.
Qui abbiamo due file, uno chiamato "Backup" e l'altro chiamato "Elimina backup". Possiamo illustrare il problema con questi nomi di file usando ls. Se proviamo a utilizzare ls nel file Backup to Delete e non eseguiamo l'escape o spostiamo il nome del file, il comando fallisce.
ls -hl backup da eliminare
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à che mancano due file, quindi eliminerà il file chiamato "Backup", che non volevamo.
rm backup da eliminare
rm pensa che funzioni con tre file, 'backup', 'to' e 'delete'. Si lamenta di non riuscire a trovare To e Delete, ma trova Backup e lo elimina silenziosamente.
Citare il nome del file consente a rm di eliminare il file corretto.
rm 'backup da eliminare'
Puoi anche eseguire l'escape degli spazi utilizzando una barra rovesciata "\", in questo modo:
rm backup\to\delete
Se utilizzi la scheda Completamento scheda per inserire i nomi dei file, questi verranno automaticamente sottoposti a escape, se necessario.
Cosa sono i dispositivi di protezione individuale?
A differenza delle motoseghe della vita reale, non ci sono dispositivi di protezione individuale che puoi usare con il tuo 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.
A parte questo, è una pratica finché non ti senti a tuo agio e sicuro di te. Il modo più sicuro per farlo è copiare una serie di file sacrificali in una directory e fare pratica su di essi.