Grundlegende Dateioperationen unter Linux

LinuxBeginner
Jetzt üben

Einführung

Linux organisiert Daten in einem Baum aus Verzeichnissen und Dateien. Befehle arbeiten mit Orten in diesem Baum. Deshalb beginnen zuverlässige Dateioperationen mit drei Fragen: Wo befinde ich mich? Was befindet sich hier? Welcher Pfad bezeichnet das gewünschte Objekt?

In diesem Lab erarbeiten Sie diese Grundlagen Schritt für Schritt in /home/labex/project/file-basics. Sie navigieren mit absoluten und relativen Pfaden, zeigen sichtbare und versteckte Einträge an, erstellen Dateien und Verzeichnisse, wählen Namen mit Platzhaltern aus und kopieren, verschieben und löschen Übungsdateien sicher. Im letzten Schritt lernen Sie Terminal-Tastenkürzel kennen, mit denen Sie diese Operationen schneller ausführen können, ohne ihre Bedeutung zu verändern.

Arbeitsverzeichnis ermitteln

In diesem Schritt verknüpfen Sie die Eingabeaufforderung des Terminals mit dem Verzeichnis, in dem die Befehle ausgeführt werden.

Die Shell besitzt immer ein aktuelles Arbeitsverzeichnis. Relative Pfade beginnen in diesem Verzeichnis. Wenn Sie Ihren aktuellen Ort prüfen, vermeiden Sie daher viele typische Anfängerfehler. Wechseln Sie mit dem vollständigen Pfad in den Arbeitsbereich dieses Labs:

cd /home/labex/project/file-basics

Ein Pfad, der mit / beginnt, ist ein absoluter Pfad. Er beginnt im Stammverzeichnis des Dateisystems und bezeichnet unabhängig vom Ausgangsort immer denselben Ort.

Geben Sie das Arbeitsverzeichnis aus:

pwd

Sie sollten Folgendes sehen:

/home/labex/project/file-basics

Speichern Sie diesen Ort als Nachweis. Der Operator > leitet die Ausgabe in starting-location.txt um. Da die Ausgabe in die Datei geschrieben wird, erscheint sie diesmal nicht auf dem Bildschirm:

pwd > starting-location.txt

Lesen Sie die Datei, um zu prüfen, was gespeichert wurde:

cat starting-location.txt

Auf dem Terminal und in der Datei sollte derselbe absolute Pfad stehen.

Mit relativen Pfaden navigieren

In diesem Schritt bewegen Sie sich mit relativen Pfaden und den speziellen Namen . und .. durch benachbarte Verzeichnisse.

Wechseln Sie bei Bedarf zurück in den Arbeitsbereich:

cd /home/labex/project/file-basics

Zeigen Sie die sichtbaren Einträge an:

ls

Sie sollten path-map und starting-location.txt sehen. Wechseln Sie mit einem relativen Pfad in path-map. Ein relativer Pfad wird ausgehend vom aktuellen Verzeichnis interpretiert:

cd path-map
pwd

Wechseln Sie nun in north und lesen Sie die Referenzdatei:

cd north
cat reference.txt

Die Ausgabe lautet north reference. Der Name .. bezeichnet das übergeordnete Verzeichnis, also eine Ebene oberhalb des aktuellen Orts:

cd ..

Wechseln Sie aus path-map in das untergeordnete Verzeichnis south:

cd south
cat reference.txt

Der Name . bezeichnet das aktuelle Verzeichnis. Speichern Sie den aktuellen absoluten Ort im Stammverzeichnis des Labs. Verwenden Sie dazu pwd und ein relatives Ziel, das zwei Ebenen nach oben führt:

pwd > ../../relative-location.txt

Wechseln Sie mit seinem absoluten Pfad direkt in das Stammverzeichnis des Labs zurück:

cd /home/labex/project/file-basics
cat relative-location.txt

Der gespeicherte Pfad sollte mit /path-map/south enden. Sie haben sowohl relative Pfade für die Navigation als auch einen absoluten Pfad für die Rückkehr verwendet.

Verzeichnisinhalte untersuchen

In diesem Schritt verwenden Sie Optionen von ls, um versteckte Namen und Dateidetails anzuzeigen.

Führen Sie im Stammverzeichnis des Labs eine einfache Verzeichnisauflistung aus:

cd /home/labex/project/file-basics
ls

Linux blendet Namen, die mit einem Punkt beginnen, normalerweise aus. Die Option -a bedeutet „all“ und schließt diese Einträge ein:

ls -a

Jetzt sollten Sie zusätzlich .practice-note sowie . für das aktuelle Verzeichnis und .. für das übergeordnete Verzeichnis sehen.

Die Option -l erzeugt eine lange Verzeichnisauflistung mit Berechtigungen, Besitzer, Größe, Zeitangabe und Namen:

ls -l

Kombinieren Sie die Optionen, um alle Einträge in langer Form zu untersuchen:

ls -la

Jede Ausgabezeile beginnt mit einem Typ- und Berechtigungsfeld. Ein führendes d kennzeichnet ein Verzeichnis, ein führendes - eine reguläre Datei. Berechtigungen werden später ausführlich behandelt.

Speichern Sie die Namen einschließlich der versteckten Einträge. ls zeigt sie in diesem kontrollierten Arbeitsbereich bereits alphabetisch an, daher ist vorerst kein zusätzlicher Sortierbefehl erforderlich:

ls -A > all-names.txt

Im Gegensatz zu -a lässt -A die speziellen Einträge . und .. weg, behält aber die anderen versteckten Namen bei. Zeigen Sie das Ergebnis an:

cat all-names.txt

Die Liste sollte .practice-note, path-map und die in den vorherigen Schritten erstellten Dateien enthalten.

Verzeichnisse und Dateien erstellen

In diesem Schritt erstellen Sie eine kleine Projektstruktur und schreiben Text in reguläre Dateien.

mkdir erstellt ein Verzeichnis. Die Option -p erstellt außerdem fehlende übergeordnete Verzeichnisse, sodass ein verschachtelter Pfad mit einem einzigen Befehl angelegt werden kann:

cd /home/labex/project/file-basics
mkdir -p workspace/docs workspace/logs

Dadurch entstehen workspace sowie die untergeordneten Verzeichnisse docs und logs. Untersuchen Sie das Ergebnis:

find workspace -maxdepth 2 -type d

touch erstellt eine leere Datei, wenn der angegebene Name noch nicht existiert. Erstellen Sie zwei Dateien gleichzeitig:

touch workspace/docs/guide.txt workspace/logs/app.log

Schreiben Sie Inhalt in die Anleitung. Ein einzelnes > ersetzt das Ziel durch die Ausgabe des Befehls:

echo "Linux file practice" > workspace/docs/guide.txt

Hängen Sie mit >> eine zweite Zeile an. Dabei bleibt der vorhandene Inhalt erhalten:

echo "Paths make locations predictable" >> workspace/docs/guide.txt

Lesen Sie die vollständige Datei:

cat workspace/docs/guide.txt

Sie sollten beide Zeilen in ihrer ursprünglichen Reihenfolge sehen. Die leere Datei app.log existiert ebenfalls und steht für die spätere Übung mit Platzhaltern bereit.

Namen mit Platzhaltern auswählen

In diesem Schritt erstellen Sie Dateigruppen und wählen sie anhand von Dateinamenmustern aus.

Wechseln Sie in das Verzeichnis logs:

cd /home/labex/project/file-basics/workspace/logs

Eine Brace Expansion erzeugt mehrere konkrete Namen, bevor der Befehl ausgeführt wird. Erstellen Sie nummerierte Protokolldateien:

touch app{1..3}.log worker{1..2}.log notes.txt

Die Shell erweitert {1..3} zu 1 2 3. Dadurch wird app{1..3}.log zu drei Argumenten.

Ein Platzhalter funktioniert anders: Er findet Namen, die bereits existieren. * steht für eine beliebige Zeichenfolge:

ls *.log

Die Ausgabe enthält jeden Namen, der mit .log endet, aber nicht notes.txt.

Der Platzhalter ? steht für genau ein Zeichen. Zeigen Sie nur die nummerierten app-Protokolle an:

ls app?.log

Die Shell erweitert Dateinamensmuster in alphabetischer Reihenfolge. printf gibt jeden erweiterten Namen in einer eigenen Zeile aus, und > speichert diese Zeilen:

printf '%s\n' *.log > matched-logs.txt
cat matched-logs.txt

Die gespeicherte Liste sollte app.log, app1.log, app2.log, app3.log, worker1.log und worker2.log enthalten. Wenn Sie *.log in Anführungszeichen setzen, würde die Erweiterung durch den Platzhalter verhindert. Deshalb bleibt das Muster hier bewusst ohne Anführungszeichen.

Dateien sicher kopieren, verschieben und löschen

In diesem Schritt vergleichen Sie die Auswirkungen von cp, mv und rm, bevor Sie diese Befehle in der folgenden Challenge verwenden.

Wechseln Sie zurück in das Arbeitsverzeichnis:

cd /home/labex/project/file-basics/workspace

cp SOURCE DESTINATION erstellt eine weitere Datei und lässt die Quelldatei an ihrem ursprünglichen Ort. Erstellen Sie eine Sicherungskopie der Anleitung:

cp docs/guide.txt docs/guide-backup.txt

Bestätigen Sie, dass beide Dateien denselben Inhalt haben. cmp vergleicht zwei Dateien Byte für Byte. Bei identischen Dateien gibt der Befehl nichts aus; eine Fehlermeldung würde bedeuten, dass sie sich unterscheiden:

cmp docs/guide.txt docs/guide-backup.txt

mv SOURCE DESTINATION verschiebt ein Objekt oder benennt es um. Verschieben Sie die Sicherung in das Stammverzeichnis des Arbeitsbereichs und geben Sie ihr einen eindeutigeren Namen:

mv docs/guide-backup.txt archived-guide.txt

Zeigen Sie beide Orte an:

ls docs
ls

Sie sollten guide.txt unter docs und archived-guide.txt im aktuellen Verzeichnis sehen.

rm entfernt eine benannte Datei dauerhaft. Normalerweise gibt es im Terminal keinen Papierkorb. Löschen Sie nur die entbehrliche Notizdatei:

rm logs/notes.txt

Zeigen Sie das Verzeichnis erneut an, damit die Löschung sichtbar wird:

ls logs

notes.txt sollte nicht mehr erscheinen. Die ursprüngliche Anleitung und ihre verschobene Kopie sind weiterhin vorhanden; nur die ausdrücklich als entbehrlich benannte Datei wurde gelöscht.

Mit Terminal-Tastenkürzeln schneller arbeiten

In diesem Schritt üben Sie vier Terminal-Steuerungen, die Tipparbeit reduzieren und Ihnen helfen, einen weiterhin laufenden Befehl zu beenden.

Wechseln Sie zunächst in das Dokumentverzeichnis:

cd /home/labex/project/file-basics/workspace/docs

Führen Sie einen Befehl aus, den Sie erneut verwenden werden:

cat guide.txt

Drücken Sie einmal den Pfeil nach oben (Up Arrow). Der vorherige Befehl cat guide.txt sollte wieder an der Eingabeaufforderung erscheinen. Drücken Sie die Eingabetaste (Enter), um ihn erneut auszuführen. Mit dem Befehlsverlauf müssen Sie den Befehl nicht neu eingeben. Sie können die wiederhergestellte Zeile vor der Ausführung weiterhin bearbeiten.

Geben Sie als Nächstes cat g ein, ohne die Eingabetaste zu drücken, und drücken Sie dann die Tabulatortaste (Tab). Da nur guide.txt übereinstimmt, sollte die Shell den Dateinamen vervollständigen. Drücken Sie die Eingabetaste, um den vervollständigten Befehl auszuführen.

Starten Sie nun einen Befehl, der dauerhaft wartet:

tail -f /dev/null

tail -f verfolgt eine Datei und wartet auf neue Daten. /dev/null liefert keine nützlichen Zeilen, daher scheint der Befehl stillzustehen. Drücken Sie Strg+C (Ctrl+C), um einen Interrupt zu senden und zur Eingabeaufforderung zurückzukehren. Dies ist die übliche erste Reaktion, wenn ein im Vordergrund laufender Befehl beendet werden soll.

Drücken Sie Strg+L (Ctrl+L), um die alte Ausgabe vom sichtbaren Bildschirm zu entfernen. Wie clear löscht dies weder Dateien noch den Befehlsverlauf.

Erstellen Sie nach der Rückkehr zur Eingabeaufforderung eine Abschlussmarkierung:

echo "Shortcuts practiced" > /home/labex/project/file-basics/shortcuts-complete.txt
cat /home/labex/project/file-basics/shortcuts-complete.txt

Die Markierung bestätigt, dass Sie nach der interaktiven Übung erfolgreich zur Eingabeaufforderung zurückgekehrt sind.

Zusammenfassung

Sie haben gelernt, wie das Arbeitsverzeichnis und Pfade Dateioperationen steuern. Sie navigierten mit absoluten und relativen Pfaden, untersuchten versteckte Einträge und Metadaten, erstellten eine Verzeichnisstruktur und Textdateien, wählten Namen mit Platzhaltern aus und verglichen das Kopieren, Verschieben und dauerhafte Löschen. Außerdem übten Sie den Befehlsverlauf, die Tab-Vervollständigung, Ctrl+C und Ctrl+L. Im nächsten Lab lernen Sie, wie Sie zuverlässige Hilfe finden, wenn ein unbekannter Befehl oder eine unbekannte Option auftaucht.