Linux File System
Ziel
In diesem Hands-On lernen Sie die grundlegenden Konzepte des Linux-Dateisystems kennen. Sie werden:
- den Filesystem Hierarchy Standard (FHS) verstehen
- wissen, welche Verzeichnisse welche Aufgaben haben
- verstehen, wie Programme über die PATH-Variable gefunden werden
- den which-Befehl sicher einsetzen
- grundlegende Linux-Dateitypen erkennen, insbesondere Verzeichnisse und Sockets
Hilfsmittel
- Nutzen Sie die bisherigen Kapitel Navigation & Textverarbeitung sowie Shell als Referenz.
- Versuchen Sie, die Aufgaben eigenständig zu lösen. Zu jeder Aufgabe gibt es eine Lösungshilfe.
Vorbereitung
- Öffnen Sie ein Terminal
- Stellen Sie sicher, dass Sie sich im Home-Verzeichnis befinden:
cd ~
pwd
Aufgabe 1 – Das Linux-Dateisystem (FHS)
Der Filesystem Hierarchy Standard (FHS) legt fest, welche Verzeichnisse es gibt und wofür sie verwendet werden.
1.1 Wichtige Verzeichnisse erkunden
Listen Sie den Inhalt des Root-Verzeichnisses / auf:
ls /
Typische Verzeichnisse sind u.a.:
| Verzeichnis | Bedeutung |
|---|---|
/ |
Wurzel des Dateisystems |
/bin |
Zentrale Programme (ls, cp, mv, …) |
/sbin |
Systemprogramme (meist für root) |
/etc |
Konfigurationsdateien |
/home |
Home-Verzeichnisse der Benutzer |
/var |
Variable Daten (Logs, Cache, Spools) |
/tmp |
Temporäre Dateien |
/usr |
Benutzerprogramme & Bibliotheken |
1.2 Verzeichnisse genauer untersuchen
Schauen Sie sich folgende Verzeichnisse genauer an:
ls /bin
ls /etc
ls /var
❓ Fragen
- Welche Art von Dateien erwarten Sie in /etc?
- Warum liegen Logdateien unter /var?
Lösung / Erklärung
/etcenthält textbasierte Konfigurationsdateien/varenthält veränderliche Daten wie Logs (/var/log)
Aufgabe 2 – Die PATH-Variable
Linux sucht Programme nicht im aktuellen Verzeichnis, sondern in den Verzeichnissen der PATH-Variable.
2.1 PATH anzeigen
Geben Sie die PATH-Variable aus:
echo $PATH
Die Ausgabe besteht aus mehreren Verzeichnissen, getrennt durch :.
Beispiel:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
2.2 Bedeutung von PATH verstehen
- Wird ein Befehl eingegeben (z.B.
ls), durchsucht die Shell die PATH-Verzeichnisse von links nach rechts - Das erste gefundene Programm wird ausgeführt
Testen Sie:
ls
/bin/ls
lswird über PATH gefunden/bin/lsist der vollständige Pfad zum Programm
Aufgabe 3 – Programme finden mit which
Der Befehl which zeigt, welches Programm tatsächlich ausgeführt wird.
3.1 which verwenden
which ls
which bash
which python
3.2 which und PATH kombinieren
Vergleichen Sie:
echo $PATH
which nano
❓ Fragen
- In welchem Verzeichnis liegt nano?
- Ist dieses Verzeichnis Teil von PATH?
Lösung
whichzeigt den vollständigen Pfad- Nur Programme in PATH können ohne Pfadangabe gestartet werden
Aufgabe 4 – Linux-Dateitypen
Unter Linux ist alles eine Datei – aber es gibt verschiedene Dateitypen.
4.1 Dateitypen anzeigen
Erstellen Sie ein Testverzeichnis:
mkdir ~/filetypes
cd ~/filetypes
Erstellen Sie eine normale Datei und ein Verzeichnis:
touch datei.txt
mkdir ordner
Zeigen Sie die Details an:
ls -l
Beispielausgabe:
-rw-r--r-- 1 user user 0 datei.txt
drwxr-xr-x 2 user user 4096 ordner
4.2 Wichtige Dateitypen
| Kennzeichen | Typ |
|---|---|
- |
Normale Datei |
d |
Verzeichnis |
l |
Symbolischer Link |
s |
Socket |
p |
Named Pipe |
b |
Block Device |
c |
Character Device |
4.3 Symbolische Links (Soft Links)
Symbolische Links sind Verweise auf andere Dateien oder Verzeichnisse. Sie funktionieren wie Shortcuts in Windows.
- Erstellen Sie eine Beispieldatei und einen symbolischen Link darauf.
Lösung
echo "Das ist der Inhalt der Originaldatei" > original.txt
ln -s original.txt symlink.txt
- Untersuchen Sie die Dateien:
- mit
ls -l - mit
cat
- mit
Lösung
ls -l
cat original.txt
cat symlink.txt
-
Beobachten Sie:
- Der symbolische Link wird mit
lgekennzeichnet - Der Link zeigt mit
->auf die Originaldatei - Beide Dateien haben denselben Inhalt
- Der symbolische Link wird mit
-
Bearbeiten Sie einer der Dateien und prüfen Sie den Inhalt beider Dateien.
Lösung
echo "Zusätzlicher Inhalt" >> symlink.txt
cat original.txt
cat symlink.txt
- Löschen Sie die Originaldatei
- Versuchen Sie, den symbolischen Link zu verwenden.
Lösung
rm original.txt
ls -l symlink.txt
cat symlink.txt
❓ Frage - Was passiert mit dem symbolischen Link, wenn die Originaldatei gelöscht wird?
Lösung
- Der symbolische Link bleibt bestehen, wird aber zu einem "broken link"
- Der Zugriff auf den Link schlägt fehl, da die Zieldatei nicht mehr existiert
4.4 Hard Links
Hard Links sind mehrere Namen für dieselbe Datei. Im Gegensatz zu symbolischen Links zeigen sie direkt auf den Inode (die physische Datei).
- Erstellen Sie eine neue Datei und einen Hard Link.
Lösung
echo "Inhalt für Hard Link Test" > hardlink-original.txt
ln hardlink-original.txt hardlink-copy.txt
- Untersuchen Sie die Dateien:
ls -l
ls -i # zeigt Inode-Nummern an
- Bearbeiten Sie eine der Dateien und prüfen Sie den Inhalt beider Dateien.
Lösung
echo "Zusätzlicher Inhalt" >> hardlink-copy.txt
cat hardlink-original.txt
cat hardlink-copy.txt
- Löschen Sie die "Original"-Datei und testen Sie den Zugriff auf den Hard Link.
rm hardlink-original.txt
cat hardlink-copy.txt # Inhalt ist noch da!
❓ Fragen
- Was ist der Unterschied zwischen Hard Links und symbolischen Links?
- Warum funktioniert der Hard Link noch, nachdem die "Original"-Datei gelöscht wurde?
Lösung
- Symbolische Links: Zeigen auf einen Dateinamen (können brechen)
- Hard Links: Zeigen auf den gleichen Inode (physische Datei)
- Hard Links sind gleichberechtigte Namen für dieselbe Datei - es gibt kein "Original"
4.5 Vergleich: Symbolic vs Hard Links
Erstellen Sie zum Vergleich beide Link-Typen:
# Aufräumen und neu starten
rm -f *.txt
echo "Test-Inhalt" > test.txt
# Beide Link-Typen erstellen
ln -s test.txt symbolic-link.txt # Symbolischer Link
ln test.txt hard-link.txt # Hard Link
# Vergleichen
ls -li
file test.txt symbolic-link.txt hard-link.txt
| Aspekt | Symbolischer Link | Hard Link |
|---|---|---|
Kennzeichen in ls -l |
l am Anfang |
- (wie normale Datei) |
| Inode-Nummer | Unterschiedlich | Identisch |
| Funktioniert über Dateisysteme | Ja | Nein |
| Ziel gelöscht | Link bricht | Datei bleibt |
| Kann auf Verzeichnisse zeigen | Ja | Nein (meist) |
Abschluss
Sie haben gelernt:
- wie das Linux-Dateisystem strukturiert ist (FHS)
- wie Programme über PATH gefunden werden
- wie
whichbei der Fehlersuche hilft - welche grundlegenden Dateitypen es gibt
- wie symbolische und Hard Links funktionieren und sich unterscheiden