Der Linux-rm-Befehl: Alles, was Sie wissen müssen
Veröffentlicht: 2023-01-22 Der Linux-Befehl rm
löscht Dateien und Verzeichnisse. Um dieses Tool sicher zu verwenden, müssen Sie sicher sein, was passieren wird, wenn Sie „Enter“ drücken. Hier ist, was Sie wissen müssen.
Was ist der rm-Befehl in Linux?
So löschen Sie Dateien mit rm
Verwenden von Platzhaltern mit rm
rm interaktiv verwenden
Verwenden der rm-Force-Option
Verzeichnisse löschen mit rm
Vermeidung von Fehlern bei der Verwendung von rm
Welche PSA?
Was ist der rm-Befehl in Linux?
Der Linux-Befehl rm
dient hauptsächlich zum Löschen von Dateien. Es ist eines, auf das die meisten Menschen stoßen, sobald sie anfangen, Linux zu verwenden. Nur weil Sie ein Linux-Neuling sind, werden Sie wahrscheinlich Fehler machen. Sie erstellen oder kopieren Dateien versehentlich, mit falschem Namen oder an den falschen Ort. Es ist alles Teil der Lernkurve der Befehlszeile. Die Bereinigungsoperationen für solche Fehler beinhalten rm
.
Der Befehl rm
kann Dateien, Dateigruppen, Verzeichnisse oder komplette Verzeichnisbäume löschen. Deshalb muss es mit Vorsicht verwendet werden. Die Verwendung von rm
ist nicht schwierig, aber die Strafe für einen Fehler ist hoch.
Wenn eine Datei mit rm
gelöscht wird, ist sie weg. Es wird nicht in den Papierkorb verschoben. Es wird sofort ausgelöscht. Das bedeutet nicht, dass Sie die Verwendung von rm
vermeiden sollten. Aber um es sicher zu verwenden, müssen Sie sich dessen bewusst sein, was es kann, und sicherstellen, dass Sie es richtig verwenden.
Einige Tools sind gefährlicher als andere und weitaus weniger fehlerverzeihend. Deshalb gab es nie einen Film namens The Texas Wrench Massacre . rm
ist kein Schraubenschlüssel, es ist definitiv eine Kettensäge.
Menschen benutzen jeden Tag den ganzen Tag Kettensägen, und solange sie verantwortungsbewusst und achtsam damit umgehen, geht es ihnen gut. Genauso verhält es sich mit rm
. Wenn Sie rm
aus Ihrer Werkzeugtasche ziehen, sollten Sie langsamer werden und Ihre Befehlszeile überprüfen, dann noch einmal überprüfen.
Der Befehl rm
ist eine ausführbare Datei, er ist nicht Teil der Shell. Obwohl wir hier Bash verwenden, handelt es sich um den Standard-Linux- rm
und nicht um einen speziellen Bash- rm
.
VERWANDT: Befehlszeilen: Warum stören sich die Leute immer noch an ihnen?
So löschen Sie Dateien mit rm
Der einfachste Weg, rm
zu verwenden, besteht darin, den Namen einer Datei anzugeben, die Sie löschen möchten.
rm config.gc
Sie kehren automatisch zur Befehlszeile zurück. rm
nimmt die klassische, geschlossene Linux-Haltung ein, dass Sie davon ausgehen können, dass es das getan hat, was Sie verlangt haben, wenn es sich über nichts beschwert. Die Angabe eines Dateinamens wie diesem bewirkt, dass rm
im aktuellen Arbeitsverzeichnis nach der Datei sucht.
Sie können mehrere Dateinamen in der Befehlszeile angeben. Sie können auch einen Verzeichnispfad angeben, wenn sich eine zu löschende Datei nicht im aktuellen Verzeichnis befindet.
rm memlog.sh /home/dave/dev-archive/config.gc
Auch hier wird nichts gemeldet, wenn es rm
gelingt, die angegebenen Dateien zu löschen.
VERWANDT: 37 Wichtige Linux-Befehle, die Sie kennen sollten
Verwenden von Platzhaltern mit rm
Mit Platzhaltern können Sie Gruppen oder Sammlungen von Dateien angeben, ohne die einzelnen Dateien in der Befehlszeile auflisten zu müssen.
Das Sternchen „ *
“ steht für eine beliebige Folge von Zeichen, einschließlich keiner. Das Fragezeichen „ ?
” steht für ein beliebiges einzelnes Zeichen.
Um zu überprüfen, ob Ihre Wildcards Ihren Erwartungen entsprechen, und nicht mehr, können Sie sie mit ls verwenden, bevor Sie sie mit rm verwenden.
Um alle PNG-Dateien im aktuellen Verzeichnis zu löschen, verwenden Sie „*.png“. Das bedeutet, dass jede Zeichenfolge gefolgt von „.png“ abgeglichen wird. Wenn die Dateien gelöscht wurden, können wir mit ls
überprüfen, ob sie weg sind.
ls *.png
rm *.png
ls *.png
Auf unserem Testcomputer haben wir zwei Dateien im aktuellen Verzeichnis, deren Namen mit „config“ beginnen.
Wir können beide löschen, indem wir den Sternchen-Platzhalter verwenden. Es stimmt mit beiden Dateien überein, da rm
nach Dateinamen sucht, die mit „config“ beginnen, gefolgt von einer beliebigen Zeichenfolge. Bei einer Datei lautet diese Zeichenfolge „.sl3“, die Dateinamenerweiterung. Der andere Dateiname hat keine Zeichen nach „config“, aber da das Sternchen mit beliebigen Zeichen oder keinen Zeichen übereinstimmt, passt es auch zu diesem Dateinamen.
ls-Konfiguration*
rm-Konfiguration*
ls-Konfiguration*
Sie können das Fragezeichen paarweise verwenden. Dadurch werden Dateien gelöscht, deren Dateierweiterungen genau zwei Zeichen lang sind.
ls *.??
rm *.??
ls *.??
VERBINDUNG: 15 Sonderzeichen, die Sie für Bash kennen müssen
rm interaktiv verwenden
Ein sicherer Weg, rm
zu verwenden, besteht darin, es zu zwingen, nach einer Bestätigung zu fragen, bevor es jede Datei löscht. Mit der Option -i
(interaktiv) können Sie dies tun. Wenn Sie diese Option zu Ihrer Befehlszeile hinzufügen, werden Sie von rm
vor jedem Löschen aufgefordert, sodass Sie die Möglichkeit haben, Aktionen zu überspringen, die Sie nicht beabsichtigt hatten.
Wir verwenden in diesem Befehl die Option -i
(interaktiv). Es versucht, alle Dateien mit einer Dateierweiterung mit einem einzigen Zeichen zu löschen.
rm -i *.?
Jede übereinstimmende Datei wird der Reihe nach präsentiert. Wenn Sie mit „y“ oder „Y“ antworten, wird die Datei gelöscht. Antworten Sie mit „n“, bleibt die Datei erhalten. Wenn Sie mit etwas anderem als „y“ oder „y“ antworten, bleibt die Datei erhalten. Sie können einfach „Enter“ drücken und die Datei bleibt erhalten.
Sie können Ihre Dateiliste schnell durcharbeiten, Dateien löschen oder überspringen, um diejenigen auszuwählen, die Sie entfernen möchten. Wie wir sehen werden, können Sie die Option i-
(interaktiv) mit anderen rm
Optionen verwenden.
Linux-Befehle | ||
Dateien | 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 · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konvertieren · rclone · schreddern · srm · scp · gzip · chattr · schneiden · finden · umask · wc | |
Prozesse | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Vernetzung | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Beste Linux-Laptops für Entwickler und Enthusiasten
Verwenden der rm-Force-Option
Wenn Sie versuchen, eine schreibgeschützte Datei zu löschen, fordert rm
Sie zur Bestätigung auf, bevor die Datei gelöscht wird. Das ist ein gutes Sicherheitsnetz, aber eines, das langweilig werden könnte, wenn Sie viele Dateien löschen müssen.
rm geonames.sl3
Die Option -f
(erzwingen) weist rm
an, niemals nachzufragen. Sie sagen ihm: "Ja, löschen Sie alle Dateien, zu denen Sie mich normalerweise auffordern würden." Es verhindert auch, dass rm
sich über nicht vorhandene Dateien beschwert.
rm -f Geonamen.sl3
Die Option -f
(force) wird häufig verwendet, wenn Sie eine verschachtelte Gruppe von Dateien und Verzeichnissen löschen.
Verzeichnisse löschen mit rm
Der Befehl rm
kann optional auch Verzeichnisse samt den darin enthaltenen Dateien entfernen. Dies ähnelt dem Befehl rmdir
, aber rmdir
kann keine Verzeichnisse mit darin enthaltenen Dateien löschen. Es löscht nur leere Verzeichnisse. Der Befehl rm
kann problemlos Verzeichnisse löschen, die Dateien und andere Verzeichnisse enthalten.
Das Löschen eines Verzeichnisses ähnelt dem Löschen einer Datei. Wir geben den Namen des Verzeichnisses in der Befehlszeile an. Wir müssen die Option -d
(Verzeichnis) einfügen. Wie beim Löschen von Dateien können wir den Namen mehrerer Verzeichnisse angeben. Wir können einen Pfad zu einem Verzeichnis angeben, das sich nicht im aktuellen Arbeitsverzeichnis befindet.
rm -d alte Projekte
Wenn das Verzeichnis Dateien enthält, schlägt dies fehl.
Um ein Verzeichnis und seinen Inhalt zu löschen, verwenden Sie das Flag -r
(rekursiv). Dadurch werden das Verzeichnis, seine Dateien und alle darin enthaltenen verschachtelten Verzeichnisse gelöscht.
rm -d Archiv
rm -r Archiv
Der zweite Befehl ist erfolgreich.
Um rm
in den vollwertigen Kettensägenmodus zu schalten, können wir die Optionen -r
(rekursiv) und -f
(erzwingen) kombinieren. Dies weist rm
an, alle Dateien und Verzeichnisse in einem Verzeichnisbaum rekursiv zu löschen, selbst wenn sie schreibgeschützt sind, und ohne uns jemals aufzufordern.
Auf unserem Testcomputer haben wir ein Verzeichnis namens „Migrationscode“. Es enthält Dateien und ein weiteres Verzeichnis namens „6502“. Das Verzeichnis „6502“ enthält auch Dateien und ein weiteres Verzeichnis namens „ASM“. Es gibt auch Dateien in diesem Verzeichnis. Einige der Dateien sind schreibgeschützt.
Wir fügen auch den Befehl -v
(verbose) hinzu, damit rm
uns mitteilt, was es tut.
rm -rfv migrierter Code
In der Ausgabe können wir sehen, dass die Dateien entfernt werden und, wenn sie leer sind, auch die Verzeichnisse entfernt werden.
Vermeidung von Fehlern bei der Verwendung von rm
Leerzeichen und andere seltsame Zeichen in Dateinamen können Probleme bereiten. Dateinamen, die beispielsweise mit einem Bindestrich „ -
“ beginnen, können mit Befehlszeilenoptionen verwechselt werden. Wenn wir eine Datei namens „-contributors.txt“ haben, versucht rm
, den Namen als eine Folge von Befehlszeilenoptionen zu verarbeiten.
Da rm
keine Option namens „ -c
“ hat, schlägt die Befehlszeilenanalyse fehl und die Datei wird nicht gelöscht. Um die Datei zu löschen, müssen Sie ihr „./“ voranstellen, um einen Pfad zu ihr bereitzustellen.
rm -contributors.txt
rm ./-contributors.txt
Auch Leerzeichen in Dateinamen sind problematisch. Geben Sie entweder den gesamten Dateinamen in Anführungszeichen ein oder verwenden Sie die Tabulatorvervollständigung, um den Namen der Datei für Sie in die Befehlszeile einzufügen, wobei Sie die Leerzeichen maskieren. Wenn Sie keine dieser Optionen verwenden, behandelt rm
jeden Teil des Dateinamens als einzelne Datei.
Hier haben wir zwei Dateien, eine mit dem Namen „backup“ und eine mit dem Namen „backup to delete“. Wir können das Problem mit diesen Dateinamen demonstrieren, indem wir ls
verwenden. Wenn wir versuchen, ls
für die Datei „backup to delete“ zu verwenden, und wir den Dateinamen nicht maskieren oder in Anführungszeichen setzen, schlägt der Befehl fehl.
ls -hl Sicherung zum Löschen
ls
beschwert sich, dass es keine Dateien namens „to“ oder „delete“ finden kann, aber es findet eine Datei namens „backup“. Das wird rm
auch tun. Es beschwert sich über zwei fehlende Dateien und löscht dann die Datei namens „backup“, was nicht das ist, was wir wollten.
rm-Sicherung zu löschen
rm
denkt, dass es mit drei Dateien arbeitet, „backup“, „to“ und „delete“. Es beschwert sich, dass es „to“ und „delete“ nicht finden kann, aber es findet „backup“ und löscht es stillschweigend.
Wenn Sie den Dateinamen in Anführungszeichen setzen, kann rm
die richtige Datei löschen.
rm 'Sicherung zum Löschen'
Sie können die Leerzeichen auch mit Backslashes „ \
“ maskieren, wie folgt:
rm backup\ to\ delete
Wenn Sie die Tab-Vervollständigung verwenden, um Ihre Dateinamen einzugeben, werden sie bei Bedarf automatisch maskiert.
Welche PSA?
Im Gegensatz zu echten Kettensägen gibt es keine persönliche Schutzausrüstung, die Sie mit rm
verwenden können.
Sie können Ihre Syntax mit ls
überprüfen, bevor Sie es mit rm
versuchen, und den interaktiven Modus verwenden, damit Sie entscheiden können, was gelöscht wird.
Abgesehen davon ist es Übung, bis Sie sich wohl und sicher fühlen. Der sicherste Weg, dies zu tun, besteht darin, eine Reihe von Opferdateien in ein Verzeichnis zu kopieren und an diesen zu üben.
VERWANDT: Dateien löschen, die älter als x Tage unter Linux sind