Zum Inhalt

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
  • /etc enthält textbasierte Konfigurationsdateien
  • /var enthä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
  • ls wird über PATH gefunden
  • /bin/ls ist 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
  • which zeigt 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

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
Lösung
ls -l
cat original.txt
cat symlink.txt
  • Beobachten Sie:

    • Der symbolische Link wird mit l gekennzeichnet
    • Der Link zeigt mit -> auf die Originaldatei
    • Beide Dateien haben denselben Inhalt
  • 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

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"

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 which bei der Fehlersuche hilft
  • welche grundlegenden Dateitypen es gibt
  • wie symbolische und Hard Links funktionieren und sich unterscheiden