Arbeiten mit Verzeichnissen unter Linux: mkdir, mv, rmdir und rm
Linux-Verzeichnisse sicher erstellen, verschieben, umbenennen und löschen: mkdir, mv, rmdir und rm -r verständlich erklärt.
Verzeichnisse sind im Linux-Dateisystem die Container, in denen Dateien und weitere Verzeichnisse liegen. Umgangssprachlich werden sie oft als Ordner bezeichnet. Im Terminal ist jedoch meist von Verzeichnissen die Rede.
In diesem Beitrag lernen Sie, wie Sie Verzeichnisse mit mkdir erstellen, mit mv verschieben oder umbenennen und mit rmdir beziehungsweise rm -r löschen. Da Löschbefehle dauerhaft wirken können, steht eine kontrollierte Arbeitsweise im Mittelpunkt.
Verzeichnisse im Linux-Dateisystem
Das Linux-Dateisystem ist hierarchisch als Baum aufgebaut. An der Spitze steht das Root-Verzeichnis /. Darunter liegen Verzeichnisse wie /home, /etc oder /var. Ein Verzeichnis kann Dateien und Unterverzeichnisse enthalten.
Ein Unterverzeichnis liegt innerhalb eines anderen Verzeichnisses. Beispielsweise ist /home/bob/projekt ein Unterverzeichnis von /home/bob. Jeder Pfad beschreibt den Ort eines Verzeichnisses oder einer Datei.
Ein absoluter Pfad beginnt mit / und beschreibt den Ort vom Root-Verzeichnis aus. Ein relativer Pfad bezieht sich dagegen auf das aktuelle Arbeitsverzeichnis der Shell.
Mit pwd sehen Sie, welches Verzeichnis aktuell als Ausgangspunkt für relative Pfade verwendet wird:
pwd
Namen mit Leerzeichen oder Sonderzeichen müssen in der Shell besonders behandelt werden. Setzen Sie den Namen in Anführungszeichen oder maskieren Sie Leerzeichen mit einem Backslash:
mkdir "Mein Projekt"
mkdir Mein\ Projekt
Sichere Vorbereitung: Ort und Inhalt prüfen
Prüfen Sie vor einer Änderung zuerst den aktuellen Ort. Listen Sie anschließend die Inhalte des relevanten Verzeichnisses auf:
pwd
ls -la
Die Option -l zeigt eine ausführliche Liste mit Rechten, Eigentümer und weiteren Metadaten. -a schließt auch versteckte Einträge ein. Vor dem Löschen eines bestimmten Verzeichnisses können Sie beispielsweise Folgendes ausführen:
pwd && ls -la temp
Viele Terminalbefehle geben bei Erfolg keine Bestätigung aus. Wenn kein Fehlertext erscheint und der Prompt zurückkehrt, kann die Aktion erfolgreich gewesen sein. Kontrollieren Sie das Ergebnis bei wichtigen Änderungen trotzdem mit ls.
Verzeichnisse erstellen mit mkdir
Grundsyntax
Die Grundsyntax lautet:
mkdir OPTIONEN VERZEICHNIS
Ein einzelnes Verzeichnis im aktuellen Arbeitsverzeichnis erstellen Sie so:
mkdir projekt
Sie können auch einen absoluten Pfad angeben. Die dafür notwendigen übergeordneten Verzeichnisse müssen dabei bereits existieren:
mkdir /home/bob/archiv
Mehrere Verzeichnisse auf einmal erstellen
Mehrere Namen können als Argumente in einem Aufruf angegeben werden:
mkdir bilder dokumente notizen
Verschachtelte Verzeichnisse mit -p
Mit -p erzeugt mkdir auch fehlende Elternverzeichnisse. Dadurch lässt sich eine komplette Struktur in einem Schritt anlegen:
mkdir -p projekt/quelle/tests
Ohne -p würde der Befehl scheitern, wenn beispielsweise projekt oder projekt/quelle noch nicht existiert. Außerdem meldet mkdir normalerweise einen Fehler, wenn am Zielort bereits ein gleichnamiges Verzeichnis vorhanden ist. mkdir -p ist für eine bereits vorhandene Struktur dagegen geeignet, sofern kein Konflikt mit einer Datei besteht.
Typische mkdir-Fehler
Die Meldung, dass eine Datei oder ein Verzeichnis bereits existiert, bedeutet meist, dass der gewünschte Name schon belegt ist. Prüfen Sie den Eintrag:
ls -ld projekt
Wählen Sie anschließend einen anderen Namen oder verwenden Sie -p, wenn Sie lediglich eine verschachtelte Struktur sicherstellen möchten. Bei Permission denied fehlen häufig Schreibrechte im übergeordneten Verzeichnis.
Verzeichnisse verschieben und umbenennen mit mv
Grundsyntax
mv steht für „move“. Die Grundsyntax lautet:
mv QUELLE ZIEL
Die Quelle kann ein Verzeichnis sein. Das Ziel entscheidet dabei wesentlich über das Ergebnis.
In ein vorhandenes Zielverzeichnis verschieben
Existiert das Ziel bereits als Verzeichnis, wird die Quelle darin abgelegt. Beispiel:
mv projekt /home/bob/archiv/
Danach liegt das Verzeichnis typischerweise unter /home/bob/archiv/projekt. Dieses Verhalten ist praktisch, kann aber überraschend sein, wenn Sie einen anderen Zielpfad erwartet haben.
Zu einem vollständigen Zielpfad verschieben oder umbenennen
Wenn Sie den neuen Namen ausdrücklich im Zielpfad angeben, wird das Verzeichnis unter diesem Namen abgelegt:
mv projekt /home/bob/archiv/projekt_alt
Der übergeordnete Pfad muss dabei passend vorhanden sein. Ob projekt_alt bereits existiert, kann das Verhalten beeinflussen. Prüfen Sie deshalb das Ziel vorher:
ls -ld /home/bob/archiv /home/bob/archiv/projekt_alt
Ein Verschieben innerhalb desselben Arbeitsverzeichnisses ist zugleich ein Umbenennen:
mv projekt mein_projekt
Hier wird kein Inhalt verändert. Der Verzeichniseintrag erhält lediglich einen neuen Namen.
Konflikte mit -i vermeiden
Bei einem bestehenden Ziel können je nach Situation Einträge ersetzt oder zusammengeführt werden. Verwenden Sie bei Unsicherheit die interaktive Option -i:
mv -i QUELLE ZIEL
Vor einer kritischen Ersetzung fragt mv nach. Prüfen Sie dennoch Quelle und Ziel mit ls -ld; eine Rückfrage ersetzt keine Kontrolle des Befehls.
Leere Verzeichnisse mit rmdir löschen
Grundsyntax und Einschränkung
rmdir entfernt ausschließlich leere Verzeichnisse:
rmdir temp
Enthält temp noch Dateien oder Unterverzeichnisse, schlägt der Befehl normalerweise mit einer Meldung wie „Directory not empty“ fehl. Das ist eine Sicherheitsfunktion: rmdir löscht nicht versehentlich den Inhalt mit.
Prüfen Sie den Inhalt zuerst:
ls -la temp
Leere Elternverzeichnisse mit -p entfernen
Mit -p versucht rmdir nach dem Entfernen eines Unterverzeichnisses auch dessen leer gewordene Elternverzeichnisse zu entfernen:
rmdir -p projekt/quelle/tests
Das funktioniert nur für Verzeichnisse, die nach jedem Schritt leer sind. Sobald ein Elternverzeichnis noch andere Einträge enthält, endet die Kette.
Verzeichnisse samt Inhalt mit rm -r löschen
Rekursives Löschen
rm wird normalerweise zum Entfernen von Dateien verwendet. Mit -r oder -R arbeitet der Befehl rekursiv: Er verarbeitet das angegebene Verzeichnis und dessen gesamte Unterstruktur.
rm -r temp
Dieser Befehl entfernt temp einschließlich aller darin enthaltenen Dateien und Unterverzeichnisse. Das Löschen erfolgt in der Standard-Kommandozeile in der Regel nicht über einen Papierkorb. Die Daten sind daher nicht einfach über eine grafische Papierkorb-Funktion wiederherstellbar.
Interaktive Kontrolle mit rm -ri
Für riskante Vorgänge ist die interaktive Variante besser geeignet:
rm -ri temp
-i fordert für Einträge Bestätigungen an. So können Sie den Vorgang abbrechen oder einzelne Einträge nicht löschen. Bei großen Verzeichnisbäumen kann die Zahl der Rückfragen umfangreich sein.
Warum rm -rf besonders gefährlich ist
rm -rf kombiniert rekursives Löschen mit -f, also „force“. -f unterdrückt viele Rückfragen und Fehlermeldungen zu nicht vorhandenen Einträgen:
rm -rf VERZEICHNIS
Regeln für sicheres Löschen
- Prüfen Sie mit
pwd, wo Sie sich befinden. - Kontrollieren Sie den Zielinhalt mit
ls -laoder beispielsweisels -la temp. - Verwenden Sie bei Unsicherheit zunächst
rm -ri. - Setzen Sie keine unklaren Platzhalter wie
*ein. Ein Platzhalter kann viele Einträge gleichzeitig treffen. - Nutzen Sie die Tab-Vervollständigung bewusst und lesen Sie den vollständig eingesetzten Pfad vor dem Ausführen.
- Seien Sie besonders vorsichtig mit administrativen Rechten. Ein Befehl mit
sudokann Orte verändern, auf die Ihr normales Benutzerkonto keinen Zugriff hat. - Halten Sie für wichtige Daten aktuelle Sicherungskopien vor.
Übersicht der Verzeichnisbefehle
Löschen von Verzeichnissen: rmdir oder rm -r?
Fehlgeschlagene Aktionen verstehen
„Directory not empty“ bei rmdir
Das Verzeichnis enthält noch mindestens einen Eintrag. Dazu zählen auch Unterverzeichnisse und versteckte Dateien. Verwenden Sie ls -la, entfernen Sie bewusst nicht benötigte Inhalte oder wählen Sie nach sorgfältiger Prüfung rm -r.
„File exists“ bei mkdir
Der gewünschte Name ist am Zielort bereits vergeben. Prüfen Sie mit ls -ld, ob dort ein Verzeichnis oder eine Datei liegt. Wählen Sie gegebenenfalls einen anderen Namen. Für fehlende Bestandteile eines Pfads kann mkdir -p passend sein.
Unerwarteter Zielpfad bei mv
Wenn das Ziel bereits als Verzeichnis existiert, wird die Quelle in dieses Zielverzeichnis verschoben. Prüfen Sie das Ziel mit ls -ld und geben Sie den vollständigen neuen Zielnamen an, wenn kein automatisches Einordnen gewünscht ist.
„Permission denied“
Berechtigungen legen fest, wer ein Verzeichnis lesen, verändern oder löschen darf. Für das Erstellen oder Löschen ist häufig Schreib- und Ausführungsberechtigung am übergeordneten Verzeichnis entscheidend. Prüfen Sie Eigentümer und Rechte:
ls -ld zielverzeichnis
Verwenden Sie einen Ort, an dem Sie arbeiten dürfen. Administrative Rechte sollten nur bei nachvollziehbarem Bedarf und nach erneuter Pfadprüfung eingesetzt werden.
Pfade mit Leerzeichen
Die Shell trennt ungeschützte Leerzeichen in mehrere Argumente. Setzen Sie solche Pfade in Anführungszeichen:
mv "Mein Projekt" "Archiv 2026"
Praktischer Ablauf
- Aktuellen Ort prüfen:
pwd. - Inhalt und Ziel kontrollieren:
ls -laoderls -ld ZIEL. - Den Pfad vollständig und bewusst eingeben; Tab-Vervollständigung anschließend prüfen.
- Zum Erstellen
mkdir, zum Verschieben oder Umbenennenmvund zum Entfernen leerer Verzeichnissermdirverwenden. - Für nicht leere Verzeichnisse nur nach Kontrolle
rm -roder vorsichtigerrm -rieinsetzen. - Das Ergebnis anschließend erneut mit
lskontrollieren.
Prüfungsrelevante Merksätze
/ist das Root-Verzeichnis und der oberste Punkt der Linux-Dateisystemhierarchie.- Absolute Pfade beginnen mit
/; relative Pfade beziehen sich auf das aktuelle Arbeitsverzeichnis. mkdir -perzeugt fehlende Elternverzeichnisse.mvverschiebt und kann durch einen neuen Namen am gleichen Ort umbenennen.rmdirentfernt nur leere Verzeichnisse.rm -rlöscht rekursiv auch Inhalte und Unterverzeichnisse.rm -rfunterdrückt viele Rückfragen und ist deshalb besonders riskant.- Vor Änderungen helfen
pwd,ls -laund eine genaue Prüfung des Pfads.
Für weiterführende Grundlagen eignen sich die Beiträge Arbeiten mit Dateien, Linux-Verzeichnisstruktur, Arten von Zugriffsrechten und Grundlegende Linux-Befehle.