Linux / Befehl rm: Dateien und Verzeichnisse sicher entfernen

rm entfernt Dateien und mit -r auch Verzeichnisbäume. Es umgeht normalerweise den Desktop-Papierkorb; prüfen Sie Pfade und Umfang vor dem Ausführen und verwenden Sie interaktive Rückfragen bewusst.

Die Beispiele verwenden das Verhalten von GNU Coreutils. Prüfen Sie rm --help, man rm und die Dokumentation Ihrer Distribution, wenn Portabilität oder eine versionsspezifische Option wichtig ist.

Ergänzende Befehle und Anwendungsfälle finden Sie in Wesentliche Linux-Befehle: Eine praktische Referenz nach Aufgaben.

Was ist der Befehl rm?

rm entfernt Verzeichniseinträge für Dateien und mit einer rekursiven Option Verzeichnisbäume. Normalerweise umgeht es den Desktop-Papierkorb. Da -r den Umfang erweitert und -f gängige Aufforderungen und Fehlermeldungen unterdrückt, ist die Zielvalidierung wichtiger als die Bequemlichkeit.

Grundlegende Syntax

rm [OPTION]... FILE...

Setzen Sie Anführungszeichen um Pfade, die Leerzeichen enthalten. Wenn unterstützt, setzen Sie -- vor Operanden, die mit einem Bindestrich beginnen, damit sie nicht als Optionen interpretiert werden.

Grundlegende Verwendung von rm

Eine Datei entfernen

Geben Sie den genauen Pfad an. Setzen Sie -- vor einen Dateinamen, der mit einem Bindestrich beginnt.

rm old-report.txt
rm -- -temporary.txt

Mehrere übereinstimmende Dateien entfernen

Vorschau der Shell-Wildcard-Erweiterung vor dem Löschen, insbesondere in einem Verzeichnis, das unerwartete Dateien enthalten könnte.

printf '%s\n' *.tmp
rm -- *.tmp

Einen Verzeichnisbaum entfernen

Verwenden Sie -r nur, wenn jeder Eintrag unter dem Ziel entfernt werden soll. Überprüfen Sie zuerst den Baum und bevorzugen Sie einen spezifischen Pfad.

find build-cache -maxdepth 2 -print
rm -r -- build-cache

Wenn der Löschbefehl still beendet wird

rm gibt normalerweise nichts aus, auch wenn er erfolgreich ist. Das Folgende ist ein sicheres Bestätigungsbeispiel, das nur für eine zu Demonstrationszwecken erstellte Datei gilt.

printf 'demo\n' > disposable-demo.txt
rm -- disposable-demo.txt
test ! -e disposable-demo.txt
echo $?

Eine Beispielausgabe von 0 bedeutet, dass der Pfad nicht mehr existiert. Es garantiert nicht, dass die Datei wiederhergestellt werden kann, überprüfen Sie daher die Liste der Ziele, bevor Sie rm -r oder rm -f auf einem tatsächlichen Pfad verwenden.

Wichtige Optionen

Option Zweck
-r, -R Verzeichnishierarchien rekursiv entfernen.
-i Vor jeder Entfernung nachfragen.
-I Einmal für viele Dateien oder eine rekursive Entfernung nachfragen.
-f Fehlende Dateien ignorieren und normale Eingabeaufforderungen unterdrücken.
-d Entfernung leerer Verzeichnisse erlauben.
-v Entfernte Einträge melden.
--one-file-system Während der Rekursion nicht in ein anderes Dateisystem wechseln.
--preserve-root[=all] Schützen Sie Root-Pfade vor rekursiver Zerstörung.

Lange Optionen machen überprüfte Skripte oft leichter verständlich. Wenn ein Skript auf Nicht-GNU-Systemen laufen muss, überprüfen Sie jede nicht-POSIX-Option auf der Zielplattform.

Praktische Beispiele

Vorschau des Ziels

Drucken Sie Variablenwerte und inspizieren Sie den tatsächlichen Baum, bevor Sie ihn entfernen. Gehen Sie mit Leerzeichen und ungewöhnlichen Dateinamen mit dafür vorgesehenen Werkzeugen und Trennzeichen um.

printf 'target=%s\n' "$target"
find "$target" -maxdepth 2 -print

Verwenden Sie interaktive Schutzmaßnahmen

Verwenden Sie -i für eine kleine Anzahl wichtiger Dateien oder -I für eine Bestätigung vor einer großen Operation. Automatisierung sollte Bedingungen validieren, anstatt sich auf eine Eingabeaufforderung zu verlassen.

rm -i important.conf
rm -Ir old-release/

Vermeiden Sie das Überschreiten gemounteter Dateisysteme

Ein Verzeichnisbaum kann separate Mounts enthalten. Prüfen Sie die Mount-Struktur und verwenden Sie --one-file-system, wenn die rekursive Operation innerhalb eines Dateisystems bleiben muss.

findmnt --target /srv/chroot
rm -r --one-file-system -- /srv/chroot

rm und verwandte Befehle

Befehl oder Methode Hauptrolle Geeignet für
rm Dateien und Verzeichnisbäume entfernen Permanente Befehlszeilenentfernung
rmdir Nur leere Verzeichnisse entfernen Beibehalten von Pfaden, die Daten enthalten
Papierkorb-Dienstprogramm Elemente an einen wiederherstellbaren Ort verschieben Interaktive Arbeitsabläufe, die einfaches Rückgängigmachen benötigen
shred Versuch, Datei-Daten zu überschreiben Begrenzte Fälle mit einem definierten Speicherbedrohungsmodell

Wichtige Hinweise

Verwenden Sie rm -rf nicht aus Gewohnheit

Die rekursive Option erweitert den Umfang; die Force-Option unterdrückt Rückfragen und bestimmte Fehlermeldungen. Stellen Sie sicher, dass Variablen nicht leer sind und dass der aufgelöste Pfad unterhalb des vorgesehenen Wurzelverzeichnisses liegt.

Verlassen Sie sich nicht auf ein Alias als einzigen Schutz

Ein interaktives rm -i-Alias existiert möglicherweise nicht in Skripten oder auf einem anderen System. Bauen Sie Sicherheit durch Pfadprüfungen, eingeschränkte Berechtigungen und Backups auf.

Gehen Sie nicht von einer einfachen Wiederherstellung aus

Die Wiederherstellung ist unsicher und nach Wiederverwendung des Speicherplatzes möglicherweise unmöglich. Halten Sie ein getestetes Backup bereit, bevor Sie wichtige Daten löschen.

FAQ

Sendet rm Dateien in den Papierkorb?

Normalerweise nicht. Der Kommandozeilenbefehl rm umgeht den Desktop-Mülleimer.

Welche Option entfernt ein Verzeichnis mit Inhalten?

Verwenden Sie -r nur, nachdem Sie überprüft haben, dass der gesamte Baum entfernt werden soll. Verwenden Sie rmdir für ein leeres Verzeichnis.

Was ist der Unterschied zwischen -i und -I?

-i fragt bei jedem Element nach; -I zeigt eine einzige Eingabeaufforderung für eine große oder rekursive Operation an.

Kann ich eine von rm gelöschte Datei sofort wiederherstellen?

Eine Wiederherstellung ist nicht garantiert. Reduzieren Sie weitere Schreibvorgänge und folgen Sie einem für das Dateisystem geeigneten Wiederherstellungs- oder Sicherungsverfahren.

Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter GNU Coreutils rm Dokumentation und GNU Coreutils-Handbuch.