VMware ESXi and vSphere Cluster Management
Arbeiten mit Verzeichnissen unter Linux
Lerne, wie du unter Linux Verzeichnisse mit mkdir erstellst, mit mv verschiebst oder umbenennst und mit rmdir beziehungsweise rm -r sicher löschst.
Verzeichnisse sind ein grundlegender Bestandteil des Linux-Dateisystems. In diesem Beitrag lernst du, wie du Verzeichnisse in der Kommandozeile erstellst, verschiebst, umbenennst und löschst. Besonderes Augenmerk gilt dem Unterschied zwischen rmdir und rm -r.
Grundlagen von Verzeichnissen
Ein Verzeichnis ist ein Ordner im Dateisystem. Es kann Dateien und weitere Verzeichnisse enthalten. Ein Verzeichnis innerhalb eines anderen Verzeichnisses heißt Unterverzeichnis.
Eine Datei enthält Daten, zum Beispiel Text, ein Bild oder ein Programm. Ein Verzeichnis dient dagegen vor allem dazu, Dateien und Unterverzeichnisse zu organisieren. Beide sind unterschiedliche Objekte im Dateisystem.
Die Baumstruktur des Linux-Dateisystems
Das Linux-Dateisystem ist hierarchisch aufgebaut. Diese Struktur ähnelt einem Baum: Oben befindet sich das Root-Verzeichnis, dargestellt durch einen einzelnen Schrägstrich (/). Von dort zweigen weitere Verzeichnisse und Unterverzeichnisse ab.
/
├── home
│ └── bob
│ ├── dokumente
│ └── bilder
├── etc
├── tmp
└── var
Der Pfad /home/bob bezeichnet beispielsweise das Verzeichnis bob innerhalb von /home. Das Root-Verzeichnis / ist nicht mit dem Home-Verzeichnis eines Benutzers gleichzusetzen: Es ist der oberste Ausgangspunkt des gesamten Dateisystems.
Pfade: Speicherorte angeben
Ein Pfad beschreibt den Speicherort einer Datei oder eines Verzeichnisses innerhalb der Verzeichnishierarchie.
- Ein absoluter Pfad beginnt immer mit
/, zum Beispiel/home/bob/dokumente. - Ein relativer Pfad bezieht sich auf das aktuelle Arbeitsverzeichnis, zum Beispiel
projektoder./projekt.
Welches Verzeichnis gerade aktiv ist, kannst du mit pwd prüfen. Den Inhalt eines Verzeichnisses zeigt normalerweise ls an:
pwd
ls
Verzeichnisse erstellen
Mit mkdir legst du ein neues Verzeichnis an. Der Name des Verzeichnisses oder ein Pfad wird als Argument übergeben.
mkdir VERZEICHNISNAME
Um im aktuellen Arbeitsverzeichnis einen Ordner namens my_folder zu erstellen, verwendest du:
mkdir my_folder
Du kannst auch einen Pfad angeben. Existiert das übergeordnete Verzeichnis bereits, wird das neue Verzeichnis dort angelegt:
mkdir /home/bob/projekt
Das Argument nach mkdir ist also der gewünschte Name oder Speicherort des neuen Verzeichnisses. Wenn ein Verzeichnis mit diesem Namen bereits existiert, meldet mkdir normalerweise einen Fehler.
Verzeichnisse verschieben und umbenennen
Der Befehl mv verschiebt Dateien und Verzeichnisse. Seine allgemeine Syntax besteht aus zwei Argumenten:
mv QUELLE ZIEL
- Quelle: Das Verzeichnis, das verschoben werden soll.
- Ziel: Der neue Speicherort oder der neue Name.
Ein Verzeichnis verschieben
Das Verzeichnis my_folder kann beispielsweise in das Home-Verzeichnis von bob verschoben werden:
mv my_folder /home/bob/my_folder
Hier ist my_folder die Quelle und /home/bob/my_folder das Ziel. Wird am Ziel bereits ein passendes Verzeichnis angegeben, kann das Quellverzeichnis darin landen. Prüfe deshalb genau, ob der Zielpfad bereits existiert und welche Bedeutung er in deiner Situation hat.
Ein Verzeichnis umbenennen
Liegt das neue Ziel im selben übergeordneten Verzeichnis und besitzt es einen neuen Namen, verwendet mv denselben Befehl auch zum Umbenennen:
mv my_folder my_folder1
Das Verzeichnis bleibt dabei am selben Ort, erhält aber den Namen my_folder1.
Ein absoluter Zielpfad macht den neuen Speicherort ausdrücklich. Soll das Verzeichnis beispielsweise unter /home/bob den Namen my_folder1 erhalten, lautet der Befehl:
mv my_folder /home/bob/my_folder1
Ob dieser Befehl verschiebt oder gleichzeitig umbenennt, hängt davon ab, ob /home/bob/my_folder1 bereits als Verzeichnis existiert. Ist der Zielpfad nicht vorhanden, wird das Quellverzeichnis an diesen Pfad verschoben und erhält dabei den Namen my_folder1.
Leere Verzeichnisse löschen
Für ein leeres Verzeichnis ist rmdir vorgesehen:
rmdir VERZEICHNIS
Beispiel:
rmdir my_folder
rmdir entfernt das Verzeichnis nur, wenn es keine Dateien und keine Unterverzeichnisse enthält. Enthält es noch etwas, schlägt der Befehl fehl. Diese Einschränkung ist ein wichtiger Schutz: Ein versehentlich ausgewähltes Verzeichnis mit Daten wird nicht einfach mitsamt seinem Inhalt gelöscht.
Nicht leere Verzeichnisse rekursiv löschen
Wenn ein Verzeichnis Dateien oder Unterverzeichnisse enthält, kann rm mit der Option -r verwendet werden:
rm -r VERZEICHNIS
Das r steht für rekursiv. Die Aktion wird also auf das angegebene Verzeichnis und seine gesamte enthaltene Struktur angewendet: auf Unterverzeichnisse und auf die darin liegenden Dateien.
Beispiel:
rm -r my_folder
Vor dem rekursiven Löschen prüfen
- Prüfe mit
pwd, in welchem aktuellen Arbeitsverzeichnis du dich befindest. - Kontrolliere den vollständigen Zielpfad sorgfältig.
- Überlege, ob das angegebene Verzeichnis wirklich vollständig entfernt werden soll.
- Verwende
rm -rnur für ein eindeutig identifiziertes Ziel.
Ein falscher oder zu weit oben angesetzter Pfad kann deutlich mehr Daten betreffen als beabsichtigt. Besonders gefährlich ist es, einen übergeordneten Verzeichnisnamen statt des eigentlich gemeinten Unterverzeichnisses anzugeben.
Leere und nicht leere Verzeichnisse im Vergleich
| Zustand des Verzeichnisses | Geeigneter Befehl | Erwartetes Ergebnis |
|---|---|---|
| Leer | rmdir VERZEICHNIS | Das leere Verzeichnis wird entfernt. |
| Enthält Dateien oder Unterverzeichnisse | rm -r VERZEICHNIS | Das Verzeichnis und seine gesamte enthaltene Struktur werden rekursiv gelöscht. |
Wichtige Befehle für Verzeichnisse
| Befehl | Zweck | Benötigte Argumente | Wichtige Einschränkung oder Gefahr |
|---|---|---|---|
mkdir | Erstellt ein neues Verzeichnis. | Verzeichnisname oder Pfad | Das übergeordnete Zielverzeichnis muss grundsätzlich vorhanden und beschreibbar sein. |
mv | Verschiebt oder benennt Dateien und Verzeichnisse um. | Quelle und Ziel | Quelle und Ziel müssen sorgfältig unterschieden werden; ein vorhandenes Zielverzeichnis kann die Bedeutung des Befehls verändern. |
rmdir | Löscht ein leeres Verzeichnis. | Verzeichnisname oder Pfad | Bei enthaltenen Dateien oder Unterverzeichnissen schlägt der Befehl fehl. |
rm -r | Löscht ein Verzeichnis samt Inhalt rekursiv. | Verzeichnisname oder Pfad | Die Löschung ist riskant und normalerweise nicht einfach rückgängig zu machen. |
Typische Probleme und Lösungen
rmdir kann das Verzeichnis nicht löschen
Die häufigste Ursache ist, dass das Verzeichnis nicht leer ist. Es enthält entweder Dateien oder Unterverzeichnisse. Entferne den Inhalt zunächst einzeln oder verwende nur nach sorgfältiger Prüfung rm -r, wenn das gesamte Verzeichnis wirklich gelöscht werden soll.
Ein Verzeichnis wurde an den falschen Ort verschoben
Prüfe, ob bei mv Quelle und Ziel vertauscht wurden oder ob der angegebene Zielpfad bereits existierte. Kontrolliere vor dem Verschieben den aktuellen Standort mit pwd und die vorhandenen Einträge mit ls. Führe anschließend mv mit dem korrekten Ziel erneut aus.
Ein Löschbefehl könnte zu viele Daten entfernen
Wahrscheinlich verweist der angegebene Pfad auf ein übergeordnetes oder falsches Verzeichnis. Breche die Ausführung ab, solange der Befehl noch nicht gestartet wurde, und kontrolliere den Pfad Zeichen für Zeichen. Rekursive Löschbefehle gehören nur auf Ziele, die eindeutig identifiziert sind.
Zusammenfassung
- Verzeichnisse organisieren Dateien und weitere Verzeichnisse in der hierarchischen Struktur des Linux-Dateisystems.
- Das Root-Verzeichnis
/ist der oberste Ausgangspunkt. mkdir VERZEICHNISerstellt ein neues Verzeichnis.mv QUELLE ZIELverschiebt ein Verzeichnis oder benennt es bei einem neuen Zielnamen um.rmdir VERZEICHNISlöscht ausschließlich leere Verzeichnisse.rm -r VERZEICHNISlöscht ein Verzeichnis mit seinem gesamten Inhalt rekursiv und sollte nur nach sorgfältiger Prüfung verwendet werden.
Zum Üben kannst du die Befehle in einem eigens angelegten Testverzeichnis ausprobieren. Eine Übersicht zum Thema findest du auch unter Arbeiten mit Verzeichnissen.