Il comando Linux rm: tutto ciò che devi sapere
Pubblicato: 2023-01-22 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.
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
.
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
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
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
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*
Puoi usare il punto interrogativo in coppia. Questo eliminerà i file che hanno estensioni di file di due caratteri esattamente.
ls *.??
rm *.??
ls *.??
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 *.?
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
.
Comandi Linux | ||
File | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · stringhe · digitare · rinominare · zip · unzip · montare · smontare · installare · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processi | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · cronologia · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · gruppi · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Rete | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
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
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
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.
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
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
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
Nell'output possiamo vedere che i file vengono rimossi e, quando sono vuoti, vengono rimosse anche le directory.
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
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.
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
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
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'
Puoi anche eseguire l'escape degli spazi con le barre rovesciate " \
", in questo modo:
rm backup\ per\ eliminare
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