Linux-Tutorial / Dateien und Verzeichnisse verwalten: Erstellen, Kopieren, Verschieben und Löschen

Verwenden Sie mkdir, um ein Verzeichnis zu erstellen, touch, um eine leere Datei vorzubereiten, cp und mv, um sie zu kopieren oder zu verschieben, und rm und rmdir, um Dateien und leere Verzeichnisse zu entfernen. Diese Lektion hält alle Änderungen in einem neuen Übungsordner in Ihrem Home-Verzeichnis und überprüft das Ergebnis nach jeder Operation.

Wenden Sie Überprüfungen des aktuellen Verzeichnisses und der Pfade an, bevor Sie Dateien erstellen oder verschieben. Wenn das Übungsverzeichnis bereits existiert, wählen Sie einen anderen neuen Namen; fahren Sie nicht fort, wenn die Erstellung fehlschlägt.

Bereiten Sie ein sicheres Übungsverzeichnis vor

Diese Schritte gehen von Bash und einem normalen Benutzerkonto aus. ~/linux-course-07-practice soll ein neues, leeres Verzeichnis sein. Wenn es bereits existiert, wählen Sie einen anderen Namen, statt vorhandene Daten zu berühren. Der erste mkdir-Befehl gibt einen Fehler aus, wenn der Name bereits vergeben ist; betrachten Sie das als Grund zum Anhalten, nicht als einen Schritt, den man überspringen sollte.

mkdir ~/linux-course-07-practice

Bei Erfolg gibt mkdir normalerweise nichts aus. Überprüfen Sie, dass das Verzeichnis mit ls -ld erstellt wurde. Der Rest der Übung geht davon aus, dass dieser Schritt erfolgreich war und das Verzeichnis leer war.

ls -ld ~/linux-course-07-practice

Erstellen Sie zwei Unterverzeichnisse und listen Sie dann das Übungsverzeichnis auf:

mkdir ~/linux-course-07-practice/drafts ~/linux-course-07-practice/archive

ls ~/linux-course-07-practice

Sie sollten archive und drafts sehen. mkdir -p ist nützlich beim Erstellen tieferer Pfade, aber es akzeptiert auch ein vorhandenes Verzeichnis, daher wird es in dieser Übung nicht verwendet.

Eine leere Datei erstellen und überprüfen

touch erstellt eine leere Datei, wenn deren Name nicht existiert. Bei einer vorhandenen Datei kann es stattdessen Zeitstempel aktualisieren, daher sollte es nicht als Befehl verstanden werden, der nur neue Dateien erstellt.

touch ~/linux-course-07-practice/drafts/notes.txt

ls -l ~/linux-course-07-practice/drafts/notes.txt

Da die neue Datei keinen Inhalt hat, zeigt ls -l in der Regel eine Größe von 0 Bytes an. Berechtigungen und Datumsangaben hängen von Ihrem System ab. touch schreibt keinen Text in die Datei; das erfordert einen Editor oder einen anderen Befehl.

Kopieren und Umbenennen vergleichen

cp belässt die Quelle an ihrem Platz und erstellt eine separate Kopie. Dieser Befehl kopiert notes.txt von drafts nach archive. Mit GNU cp fragt -i, bevor eine vorhandene Zieldatei mit demselben Namen überschrieben wird.

cp -i ~/linux-course-07-practice/drafts/notes.txt ~/linux-course-07-practice/archive/notes.txt

ls -1 ~/linux-course-07-practice/drafts

ls -1 ~/linux-course-07-practice/archive

Die beiden ls -1-Befehle erzeugen nacheinander die folgenden Zeilen: zuerst den Inhalt von drafts, dann den von archive. Beide enthalten notes.txt. Wenn der Inhalt einer Kopie später geändert wird, wird die andere nicht automatisch aktualisiert.

notes.txt

notes.txt

mv verschiebt eine Datei an einen anderen Ort oder ändert ihren Namen innerhalb desselben Verzeichnisses. Hier wird die Originaldatei in notes-old.txt umbenannt; die archivierte Kopie behält ihren ursprünglichen Namen.

mv -i ~/linux-course-07-practice/drafts/notes.txt ~/linux-course-07-practice/drafts/notes-old.txt

ls -1 ~/linux-course-07-practice/drafts

ls -1 ~/linux-course-07-practice/archive

Jetzt ist die erste Ausgabereihe, von drafts, notes-old.txt. Die zweite, von archive, bleibt notes.txt. Der Quellname hat sich geändert, ohne dass die Kopie geändert wurde.

notes-old.txt

notes.txt

Wenn das letzte Argument an cp oder mv ein existierendes Verzeichnis ist, wird die Datei unter ihrem Namen in dieses Verzeichnis gelegt. Prüfen Sie, ob das Ziel eine Datei oder ein Verzeichnis ist, bevor Sie den Befehl ausführen. Genehmigen Sie keine -i-Überschreibungsaufforderung, ohne sie zu lesen.

Entfernen Sie eine Datei und ein leeres Verzeichnis

rm entfernt eine benannte Datei. Standardmäßig wird die Datei nicht in den Papierkorb verschoben, prüfen Sie also zuerst den Pfad mit ls. Hier fordert -i vor der Löschung eine Bestätigung an. Lesen Sie den Dateinamen in der Eingabeaufforderung und stimmen Sie nur zu, wenn es das beabsichtigte Ziel ist.

ls -l ~/linux-course-07-practice/drafts/notes-old.txt

rm -i ~/linux-course-07-practice/drafts/notes-old.txt

Wenn Sie die Löschung bestätigt haben, ist drafts jetzt leer. Verwenden Sie rmdir, der nur ein leeres Verzeichnis entfernt:

rmdir ~/linux-course-07-practice/drafts

ls ~/linux-course-07-practice

Die endgültige Auflistung enthält immer noch archive. Da archive notes.txt enthält, würde ein Versuch, es mit rmdir zu entfernen, fehlschlagen. Bewahren Sie die Übungsdaten auf, bis Sie sie nicht mehr benötigen, und prüfen Sie dann den genauen Pfad, bevor Sie sie separat bereinigen. Ein pauschales rm -rf ist keine gute Abkürzung für diese Anfängerübung.

Überprüfungen, die vor dem Ändern von Dateien durchgeführt werden sollten

  • Aktueller Standort: Führen Sie pwd aus, wenn ein relativer Pfad davon abhängt, wo Sie sich befinden.
  • Ziel: Verwenden Sie ls -ld, um die benannte Datei oder das Verzeichnis selbst zu überprüfen.
  • Überschreiben: Sichern Sie wichtige Daten und überprüfen Sie das Ziel auf einen vorhandenen Namen, bevor Sie kopieren oder verschieben.
  • Löschen: rm bietet keinen integrierten Wiederherstellungsmechanismus; raten Sie nicht einen kurzen Pfad und führen Sie ihn aus.

Für weitere Optionen und Sonderfälle siehe die Anleitungen zu touch, mkdir, cp, mv, rm und rmdir.

Offizielle Dokumentation

Konsultieren Sie das GNU Coreutils-Handbuch für diese Befehle und ihre Optionen. Überprüfen Sie man oder --help auf Ihrem eigenen System, wenn die installierte Implementierung wichtig ist.