Linux rmdir Befehl: So entfernen Sie leere Verzeichnisse
Der rmdir Befehl in Linux entfernt leere Verzeichnisse. Verzeichnisse, die Dateien oder Unterverzeichnisse enthalten, bleiben unberührt, sodass Sie leere Verzeichnisse entfernen können, während deren Inhalte erhalten bleiben.
Leere Verzeichnisse löschen
Geben Sie den Pfad des zu entfernenden Verzeichnisses an. Relative Pfade werden vom aktuellen Arbeitsverzeichnis aus aufgelöst, überprüfen Sie daher den Standort und das Ziel mit pwd und ls -la, bevor Sie den Befehl ausführen.
rmdir empty-dir
Ein leeres Verzeichnis wird normalerweise ohne Ausgabe entfernt. Wenn es Dateien oder Unterverzeichnisse enthält, wird es nicht entfernt und es erscheint ein Fehler wie Directory not empty. Fehlermeldungen hängen von der Systemsprache ab. Gelöschte Verzeichnisse werden normalerweise nicht in den Papierkorb verschoben, bestätigen Sie daher zuerst das Ziel.
Wenn Sie mehrere Verzeichnisse angeben, wird versucht, jedes einzelne zu löschen. Selbst wenn einige fehlschlagen, weil sie nicht leer sind, können andere Ziele dennoch gelöscht werden, daher sollten Sie dies nicht als einen Vorgang betrachten, der entweder vollständig erfolgreich ist oder vollständig abgebrochen wird.
rmdir first-dir second-dir
Versuche es selbst
Führe die folgende Übung an einem Ort durch, der keine Überschneidung mit bestehenden Dateien hat. Falls rmdir-practice bereits existiert, wähle einen anderen Namen, und wenn die Erstellung des Verzeichnisses fehlschlägt, führe den nächsten Befehl nicht aus. Wenn du einen anderen Namen verwendest, ersetze rmdir-practice in den untenstehenden Befehlen durch diesen Namen.
mkdir rmdir-practice
Wenn die Erstellung erfolgreich ist, wechsle mit dem folgenden Befehl in das Übungsverzeichnis und erstelle leere Verzeichnisse sowie Verzeichnisse, die Dateien enthalten.
cd rmdir-practice
mkdir empty busy
touch busy/example.txt
empty ist leer, und busy enthält Dateien. Versuche, beide Verzeichnisse der Reihe nach zu löschen.
rmdir empty
rmdir busy
Der erste Befehl löscht empty. Der zweite schlägt fehl, weil busy nicht leer ist, und die Dateien bleiben erhalten. Sie können den nächsten Befehl verwenden, um auch versteckte Elemente zu überprüfen.
ls -la busy
. und .. im Output beziehen sich auf das aktuelle und das übergeordnete Verzeichnis. Wenn es andere Dateien oder Unterverzeichnisse gibt, ist es nicht leer. Die folgende -p-Übung wird ebenfalls in diesem Verzeichnis durchgeführt. Beim Entfernen von Übungsdateien überprüfen Sie zuerst das Ziel.
-p Option, um bis zum übergeordneten Verzeichnis zu löschen
-p oder --parents versucht, die Verzeichnisse vom angegebenen Verzeichnis bis zu den übergeordneten Verzeichnissen in Reihenfolge zu löschen. Jedes Verzeichnis muss zu diesem Zeitpunkt leer sein. Sie können es im Übungsverzeichnis wie folgt überprüfen.
mkdir -p a/b/c
rmdir -p a/b/c
Wenn es keinen anderen Inhalt gibt, werden sie in der Reihenfolge c, b, a gelöscht. Wenn sich andere Dateien im übergeordneten Verzeichnis befinden, könnte das Löschen der unteren Verzeichnisse erfolgreich sein, aber das Löschen des übergeordneten Verzeichnisses möglicherweise fehlschlagen. Stellen Sie daher sicher, dass der gesamte Pfad zum Löschen vorgesehen ist, bevor Sie fortfahren. Nach Abschluss der Übung kehren Sie mit cd .. zum übergeordneten Verzeichnis zurück.
Anzeige von Vorgängen und Ignorieren nicht leerer Verzeichnisse
-v oder --verbose zeigen Meldungen über das verarbeitete Verzeichnis an. Überprüfen Sie Fehlermeldungen, um festzustellen, ob das Löschen tatsächlich stattgefunden hat.
rmdir -v empty-dir
Die Option --ignore-fail-on-non-empty von GNU rmdir ignoriert den Löschfehler, der auftritt, weil das Verzeichnis nicht leer ist. Das Verzeichnis oder sein Inhalt wird nicht gelöscht. Der folgende Befehl wird vom übergeordneten Standort des Übungsordners ausgeführt.
rmdir --ignore-fail-on-non-empty rmdir-practice/busy
Diese Option ignoriert Verzeichnisse nur, wenn sie nicht leer sind. Es handelt sich nicht um eine Option, die andere Fehler wie fehlende Pfade oder fehlende Berechtigungen ignoriert. Wenn nur ignorierte Fehler auftreten, kann der Exit-Status als erfolgreich angezeigt werden. Beurteilen Sie daher nicht, dass alle Verzeichnisse gelöscht wurden, ausschließlich basierend auf dem Exit-Status. Sie können das detaillierte Verhalten der Option im GNU rmdir-Handbuch nachlesen.
Prüfen, wenn das Löschen fehlschlägt
- Nicht leer: Ersetzen Sie
directorydurch den tatsächlichen Pfad inls -la directory, um versteckte Dateien und Unterverzeichnisse zu überprüfen. In gängigenlssind Elemente, deren Namen mit einem Punkt beginnen, möglicherweise nicht sichtbar. - Berechtigungsproblem: Überprüfen Sie die Berechtigungen, den Eigentümer und den Status des Dateisystems des Ziels und seines übergeordneten Verzeichnisses. Das Löschen erfordert im Allgemeinen Schreib- und Suchberechtigungen für das übergeordnete Verzeichnis, und es können auch andere Einschränkungen zutreffen.
- Pfad- oder Zielproblem: Überprüfen Sie den Namen und den aktuellen Standort. Ein symbolischer Link, der auf ein Verzeichnis zeigt, ist anders als das Verzeichnis selbst, also überprüfen Sie mit
ls -ld.
rmdir * erlaubt es der Shell, mehrere Namen im aktuellen Verzeichnis an den Befehl zu übergeben. Dateien können ebenfalls einbezogen werden, und versteckte Namen werden normalerweise nicht eingeschlossen, daher ist es sicherer, zuerst das Ziel mit ls -la zu überprüfen und die notwendigen Verzeichnisse anzugeben. Wenn Sie ein Verzeichnis löschen müssen, das Dateien enthält, können Sie dies nicht mit rmdir tun, und das Löschen von Dateien sollte nach Überprüfung des Inhalts separat entschieden werden.




