Linux / Befehl / rm / Befehl zum Löschen von Dateien oder Verzeichnissen
Der rm-Befehl unter Linux löscht Dateien, und die Verwendung der -r-Option löscht auch Verzeichnisse und deren Inhalte. Da er in der Regel nicht den Papierkorb durchläuft, sollten Sie vor der Ausführung des Befehls den Pfad und die zu löschenden Elemente überprüfen.
Dinge, die vor dem Löschen zu überprüfen sind
Dieser Artikel basiert auf den GNU coreutils rm und der Bash-Shell. Mit rm gelöschte Dateien können mit normalen Methoden schwer wiederherstellbar sein. Sichern Sie wichtige Dateien separat und überprüfen Sie zuerst Ihren aktuellen Standort und das Ziel mit pwd und ls -la.
rm zeigt nicht jedes Mal eine Bestätigungsnachricht an. Das Standardverhalten hängt von den Schreibberechtigungen der Datei, davon ab, ob die Eingabe von einem Terminal erfolgt usw., und auch Alias-Einstellungen in der Shell können dies beeinflussen. Um jede Datei ausdrücklich zu bestätigen, verwenden Sie -i. Für detaillierte Bedingungen beziehen Sie sich auf das GNU rm-Handbuch.
Dateien löschen
Unten ist ein Beispiel dafür, wie man ein neues Übungsverzeichnis erstellt und Dateien vorbereitet, die darin gelöscht werden sollen. Wenn rm-practice bereits im aktuellen Verzeichnis existiert, verwenden Sie einen anderen leeren Ort, und wenn der erste Befehl fehlschlägt, führen Sie die weiteren Befehle nicht aus.
mkdir rm-practice
cd rm-practice
printf 'practice\n' > sample.txt
ls
Nachdem Sie bestätigt haben, dass sample.txt angezeigt wird, führen Sie den untenstehenden Befehl aus. Geben Sie in der Bestätigungsmeldung y zum Löschen ein oder geben Sie n ein, wenn Sie nicht löschen möchten.
rm -i sample.txt
ls
Wenn Sie die Löschung genehmigt haben, wird sample.txt nicht mehr in den ls-Ergebnissen angezeigt. rm sample.txt kann die Datei ohne Bestätigung löschen, daher sollten Sie nicht davon ausgehen, dass immer eine Bestätigungsmeldung erscheint.
Verzeichnisse löschen
Um nur ein leeres Verzeichnis zu löschen, können Sie rmdir verwenden. Es schlägt normalerweise fehl, wenn das Verzeichnis nicht leer ist.
mkdir empty-dir
rmdir empty-dir
Um Verzeichnisse mit Inhalt zu löschen, verwenden Sie -r. Der Befehl unten erstellt Übungsverzeichnisse und Dateien, überprüft sie und löscht sie dann. Die gleichzeitige Verwendung von -i wird für jedes Element um Bestätigung bitten.
mkdir example-dir
printf 'practice\n' > example-dir/file.txt
ls -la example-dir
rm -ri example-dir
Die Bestätigungsnachrichten können nach dem Betreten von Verzeichnissen sowie dem Löschen von Dateien und Verzeichnissen fragen. Überprüfen Sie vor der Beantwortung jeder Frage den Namen und genehmigen Sie nur die Elemente, die Sie tatsächlich löschen möchten. Das Ablehnen einiger Fragen kann dazu führen, dass das Verzeichnis bestehen bleibt oder Fehler angezeigt werden.
Platzhalter und versteckte Dateien
Muster wie *.txt werden von der Shell auf passende Namen erweitert, bevor rm ausgeführt wird. Bevor mehrere Dateien gleichzeitig gelöscht werden, sollten Sie zunächst die passenden Namen mit einem Befehl wie dem folgenden überprüfen, anstatt den Löschbefehl zu verwenden.
printf '%s\n' ./*.txt
Nachdem Sie bestätigt haben, dass die ausgegebenen Namen die gewünschten Ziele sind, verwenden Sie rm -i ./*.txt nur bei Bedarf. Wenn keine passenden Dateien vorhanden sind, kann das Muster unverändert angezeigt werden oder das Verhalten des Befehls kann sich je nach den Bash-Einstellungen ändern. Das Einschließen des gesamten Musters in Anführungszeichen verhindert die übliche Dateinamensausweitung.
Unter den Standardeinstellungen von Bash enthält * keine versteckten Elemente, die mit einem Punkt beginnen, aber dies kann je nach Einstellungen wie dotglob variieren. Befehle, die eine große Menge wie rm -rf * löschen, ohne dies zu überprüfen, können erheblichen Schaden anrichten, wenn der aktuelle Speicherort und die Ergebnisse der Expansion falsch eingeschätzt werden. Die Unterschiede für jede Einstellung können in der Bash-Dokumentation zur Dateinamens-Erweiterung nachgeprüft werden.
Häufig verwendete Optionen und Pfade
-i: Bestätigen Sie jedes zu löschende Element. Elemente, die abgelehnt werden, werden nicht gelöscht.-r: Löschen Sie rekursiv die Inhalte innerhalb des Verzeichnisses.-f: Ignorieren Sie Ziele, die nicht existieren, und zeigen Sie keine Bestätigungsnachrichten an. Diese Option löst keine Berechtigungsfehler.-v: Geben Sie die gelöschten Elemente aus, um die Ergebnisse zu überprüfen.
Pfade mit Leerzeichen sollten in Anführungszeichen eingeschlossen werden wie rm -i "my file.txt". Wenn der Dateiname mit einem Bindestrich beginnt, geben Sie ihn nach -- wie rm -i -- -draft.txt an, um zu verhindern, dass er als Option interpretiert wird.
Wenn ein Berechtigungsfehler auftritt, überprüfen Sie, ob Sie die notwendigen Berechtigungen im übergeordneten Verzeichnis des Ziels haben, und wenden Sie sich an den Administrator. Ob eine Löschung möglich ist, wird nicht allein durch die Schreibberechtigung der Datei selbst bestimmt. Überprüfen Sie nach der Löschung erneut die Verzeichnisauflistung, und wenn Sie eine benötigte Datei gelöscht haben, stoppen Sie sofort den Vorgang und prüfen Sie das Backup- oder Wiederherstellungsverfahren der Produktionsumgebung.




