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.



