# 2.1 Dateisystem, Pfade und Verzeichnisse

Linux verwendet einen hierarchischen Verzeichnisbaum.

Das bedeutet:

    Alle Dateien,
    Verzeichnisse,
    Geräte,
    Mountpoints
    und Systembereiche befinden sich unter einem gemeinsamen Startpunkt.

Dieser Startpunkt heißt:

    /

Das ist das Root-Verzeichnis des Dateisystems.

Wichtig:

    Das Root-Verzeichnis / ist nicht dasselbe wie der Benutzer root.

Merksatz:

    Unter Linux beginnt alles bei /.

---

**Lernziele**

Nach dieser Seite solltest du erklären können:

    - wie der Linux-Verzeichnisbaum aufgebaut ist
    - was absolute und relative Pfade sind
    - was das Root-Verzeichnis ist
    - was das Home-Verzeichnis ist
    - welche wichtigen Systemverzeichnisse es gibt
    - was versteckte Dateien sind
    - was Mountpoints sind
    - warum unter Linux Laufwerke nicht wie C: oder D: eingebunden werden

---

**Grundidee des Linux-Dateisystems**

Unter Linux gibt es keinen Laufwerksbuchstaben wie bei Windows.

Windows-Beispiel:

    C:\Users\Felix\Dokumente

Linux-Beispiel:

    /home/felix/Dokumente

Unter Linux werden Datenträger,
Partitionen,
USB-Sticks,
Netzlaufwerke
oder andere Dateisysteme in den bestehenden Verzeichnisbaum eingehängt.

Dieses Einhängen nennt man:

    Mounten

Merksatz:

    Linux nutzt einen gemeinsamen Verzeichnisbaum,
    keine Laufwerksbuchstaben.

---

**Root-Verzeichnis /**

Das Root-Verzeichnis ist der oberste Punkt im Linux-Dateisystem.

Es wird dargestellt durch:

    /

Alle anderen Verzeichnisse liegen darunter.

Beispiele:

    /home

    /etc

    /var

    /usr

    /tmp

    /root

    /dev

    /proc

Wichtig:

    / ist der Anfang des Dateisystems.
    root ist der administrative Benutzer.

Merksatz:

    / ist ein Verzeichnis.
    root ist ein Benutzer.

---

**Verzeichnisbaum**

Ein einfacher Linux-Verzeichnisbaum kann so aussehen:

    /
    ├── bin
    ├── boot
    ├── dev
    ├── etc
    ├── home
    │   └── felix
    ├── root
    ├── tmp
    ├── usr
    └── var

Bedeutung:

    / ist der oberste Punkt.

    /home/felix ist ein Benutzerverzeichnis.

    /etc enthält viele Konfigurationen.

    /var enthält veränderliche Daten wie Logs.

Merksatz:

    Pfade beschreiben die Position im Verzeichnisbaum.

---

**Absolute Pfade**

Ein absoluter Pfad beginnt immer bei:

    /

Beispiele:

    /home/felix

    /etc/ssh/sshd_config

    /var/log

    /usr/bin

    /tmp/test.txt

Vorteil:

    Ein absoluter Pfad ist eindeutig,
    egal in welchem Verzeichnis man sich gerade befindet.

Merksatz:

    Absoluter Pfad beginnt mit /.

---

**Relative Pfade**

Ein relativer Pfad beginnt nicht bei /,
sondern bezieht sich auf das aktuelle Verzeichnis.

Beispiel:

    dokumente/datei.txt

Wenn man sich gerade in

    /home/felix

befindet,
dann bedeutet der relative Pfad:

    /home/felix/dokumente/datei.txt

Merksatz:

    Relativer Pfad hängt vom aktuellen Verzeichnis ab.

---

**Aktuelles Verzeichnis**

Das aktuelle Verzeichnis ist der Ort,
an dem man sich gerade in der Shell befindet.

Anzeigen mit:

    pwd

pwd steht für:

    print working directory

Beispielausgabe:

    /home/felix

Merksatz:

    pwd zeigt,
    wo du gerade bist.

---

**In Verzeichnisse wechseln**

Mit cd wechselt man das aktuelle Verzeichnis.

Beispiele:

    cd /etc

    cd /home/felix

    cd ..

    cd ~

    cd -

Bedeutung:

| Befehl | Bedeutung |
|---|---|
| cd /etc | wechselt nach /etc |
| cd .. | eine Ebene nach oben |
| cd ~ | ins eigene Home-Verzeichnis |
| cd - | zurück ins vorherige Verzeichnis |
| cd | ebenfalls meist ins eigene Home-Verzeichnis |

Merksatz:

    cd wechselt das Verzeichnis.

---

**Punkt und Doppelpunkt**

Unter Linux haben . und .. eine besondere Bedeutung.

| Zeichen | Bedeutung |
|---|---|
| . | aktuelles Verzeichnis |
| .. | übergeordnetes Verzeichnis |

Beispiele:

    ./script.sh

bedeutet:

    script.sh im aktuellen Verzeichnis ausführen

    cd ..

bedeutet:

    eine Ebene nach oben wechseln

Merksatz:

    . ist hier.
    .. ist eine Ebene höher.

---

**Home-Verzeichnis**

Jeder normale Benutzer hat meist ein eigenes Home-Verzeichnis.

Beispiel:

    /home/felix

Dort liegen persönliche Dateien,
Konfigurationen
und Benutzerdaten.

Typische Inhalte:

    Dokumente

    Downloads

    Skripte

    versteckte Konfigurationsdateien

    persönliche Einstellungen

Das Home-Verzeichnis kann mit ~ abgekürzt werden.

Beispiel:

    ~/Dokumente

bedeutet:

    /home/felix/Dokumente

Merksatz:

    ~ steht für das eigene Home-Verzeichnis.

---

**Root-Benutzer und /root**

Der administrative Benutzer heißt:

    root

Sein Home-Verzeichnis ist meist:

    /root

Das ist nicht dasselbe wie:

    /

Unterschied:

| Begriff | Bedeutung |
|---|---|
| / | Root-Verzeichnis des gesamten Dateisystems |
| root | administrativer Benutzer |
| /root | Home-Verzeichnis des Benutzers root |

Merksatz:

    /,
    root
    und /root sind drei verschiedene Dinge.

---

**Wichtige Linux-Verzeichnisse**

| Verzeichnis | Bedeutung |
|---|---|
| / | Wurzel des Dateisystems |
| /home | Home-Verzeichnisse normaler Benutzer |
| /root | Home-Verzeichnis des Root-Benutzers |
| /etc | Konfigurationsdateien |
| /var | veränderliche Daten |
| /var/log | Logdateien |
| /tmp | temporäre Dateien |
| /usr | Programme, Bibliotheken und Ressourcen |
| /bin | wichtige Benutzerprogramme |
| /sbin | wichtige Systemprogramme |
| /boot | Bootdateien und Kernel |
| /dev | Gerätedateien |
| /proc | Prozess- und Kernelinformationen |
| /sys | Kernel- und Geräteinformationen |
| /mnt | temporäre Mountpoints |
| /media | automatisch eingebundene Wechselmedien |
| /opt | optionale Zusatzsoftware |
| /srv | Daten für bereitgestellte Dienste |
| /run | Laufzeitdaten seit Systemstart |

Merksatz:

    /etc für Konfiguration.
    /var/log für Logs.
    /home für Benutzer.

---

**/etc**

Das Verzeichnis /etc enthält viele systemweite Konfigurationsdateien.

Beispiele:

    /etc/ssh/sshd_config

    /etc/fstab

    /etc/hosts

    /etc/passwd

    /etc/group

    /etc/resolv.conf

Typische Inhalte:

    Dienstkonfiguration

    Netzwerkkonfiguration

    Benutzer- und Gruppendateien

    Mount-Konfiguration

    Systemkonfiguration

Merksatz:

    /etc ist zentral für Konfigurationen.

---

**/var**

Das Verzeichnis /var enthält veränderliche Daten.

var steht für:

    variable

Typische Inhalte:

    Logs

    Spool-Dateien

    Caches

    Daten von Diensten

    Warteschlangen

Beispiele:

    /var/log

    /var/cache

    /var/spool

    /var/lib

Merksatz:

    /var enthält Daten,
    die sich im Betrieb ändern.

---

**/var/log**

Das Verzeichnis /var/log enthält viele Logdateien.

Logs helfen bei:

    Fehlersuche

    Dienstproblemen

    Loginproblemen

    Sicherheitsanalyse

    Systemereignissen

Beispiele:

    /var/log/syslog

    /var/log/auth.log

    /var/log/messages

    /var/log/nginx

    /var/log/apache2

Wichtig:

    Welche Logdateien vorhanden sind,
    hängt von Distribution und Diensten ab.

Merksatz:

    /var/log ist wichtig für Fehlersuche.

---

**/tmp**

Das Verzeichnis /tmp enthält temporäre Dateien.

Typische Nutzung:

    Zwischenspeicher

    temporäre Skriptdateien

    Installationsreste

    kurzfristige Arbeitsdateien

Wichtig:

    Daten in /tmp können automatisch gelöscht werden,
    zum Beispiel beim Neustart oder durch Aufräumdienste.

Merksatz:

    /tmp ist nicht für dauerhafte Speicherung gedacht.

---

**/usr**

Das Verzeichnis /usr enthält viele Programme,
Bibliotheken
und gemeinsam genutzte Ressourcen.

Typische Unterverzeichnisse:

    /usr/bin

    /usr/sbin

    /usr/lib

    /usr/share

Beispiele:

    Programme für Benutzer

    Systemprogramme

    Bibliotheken

    Dokumentation

Merksatz:

    /usr enthält viele installierte Programme und Ressourcen.

---

**/bin und /sbin**

/bin enthält wichtige Benutzerprogramme.

Beispiele:

    ls

    cp

    mv

    rm

    cat

/sbin enthält wichtige Systemprogramme.

Beispiele:

    ip

    reboot

    shutdown

    fsck

Hinweis:

    Auf modernen Distributionen sind /bin und /sbin teilweise symbolische Links nach /usr/bin und /usr/sbin.

Merksatz:

    bin = Programme.
    sbin = Systemprogramme.

---

**/boot**

Das Verzeichnis /boot enthält Dateien,
die für den Systemstart wichtig sind.

Typische Inhalte:

    Kernel

    Bootloader-Dateien

    Initramfs

Wichtig:

    Fehler in /boot können dazu führen,
    dass das System nicht mehr startet.

Merksatz:

    /boot enthält wichtige Startdateien.

---

**/dev**

Das Verzeichnis /dev enthält Gerätedateien.

Unter Linux werden viele Geräte als Dateien dargestellt.

Beispiele:

    /dev/sda

    /dev/nvme0n1

    /dev/null

    /dev/tty

    /dev/random

Bedeutung:

    Festplatten

    Partitionen

    Terminals

    virtuelle Geräte

Merksatz:

    Unter Linux erscheinen Geräte oft als Dateien unter /dev.

---

**/proc**

Das Verzeichnis /proc ist ein virtuelles Dateisystem.

Es enthält Informationen über:

    Prozesse

    Kernel

    Speicher

    CPU

    Systemzustand

Beispiele:

    /proc/cpuinfo

    /proc/meminfo

    /proc/1

Wichtig:

    /proc liegt nicht einfach normal auf der Festplatte.
    Es wird vom Kernel bereitgestellt.

Merksatz:

    /proc zeigt laufende Kernel- und Prozessinformationen.

---

**/sys**

Das Verzeichnis /sys ist ebenfalls ein virtuelles Dateisystem.

Es enthält Informationen über:

    Geräte

    Treiber

    Kernelobjekte

    Hardwarezustände

Wichtig:

    /sys wird häufig von Systemdiensten,
    Hardwareverwaltung
    und Diagnosewerkzeugen genutzt.

Merksatz:

    /sys zeigt System- und Geräteinformationen.

---

**/mnt und /media**

/mnt wird häufig für temporäre manuelle Mountpoints genutzt.

Beispiel:

    /mnt/backup

    /mnt/usb

/media wird häufig für automatisch eingebundene Wechselmedien genutzt.

Beispiel:

    /media/felix/USB-STICK

Merksatz:

    /mnt für manuelle Mounts.
    /media oft für Wechselmedien.

---

**/opt**

Das Verzeichnis /opt ist für optionale Zusatzsoftware gedacht.

Beispiele:

    herstellerspezifische Programme

    manuell installierte Anwendungen

    große Zusatzpakete

Merksatz:

    /opt enthält optionale Zusatzsoftware.

---

**/srv**

Das Verzeichnis /srv kann Daten enthalten,
die von Serverdiensten bereitgestellt werden.

Beispiele:

    Webdaten

    FTP-Daten

    Projektdaten für Dienste

Merksatz:

    /srv kann Dienst-Daten enthalten.

---

**/run**

Das Verzeichnis /run enthält Laufzeitdaten seit dem Systemstart.

Beispiele:

    PID-Dateien

    Sockets

    temporäre Dienstinformationen

Wichtig:

    Inhalte in /run sind nicht dauerhaft.

Merksatz:

    /run enthält aktuelle Laufzeitinformationen.

---

**Versteckte Dateien**

Dateien und Verzeichnisse,
deren Name mit einem Punkt beginnt,
gelten unter Linux als versteckt.

Beispiele:

    .bashrc

    .profile

    .ssh

    .config

    .local

Anzeigen mit:

    ls -a

Typische Nutzung:

    Benutzerkonfigurationen

    SSH-Schlüssel

    Programmeinstellungen

Merksatz:

    Punkt am Anfang bedeutet versteckt.

---

**Dateitypen unter Linux**

Unter Linux gibt es verschiedene Dateitypen.

| Typ | Bedeutung |
|---|---|
| normale Datei | Textdatei, Programm, Bild, Archiv |
| Verzeichnis | enthält Dateien und weitere Verzeichnisse |
| symbolischer Link | Verweis auf andere Datei oder Verzeichnis |
| Gerätedatei | Zugriff auf Geräte |
| Socket | Kommunikation zwischen Prozessen |
| Pipe | Datenstrom zwischen Prozessen |

Mit folgendem Befehl kann man Dateiinformationen anzeigen:

    ls -l

Merksatz:

    Unter Linux ist nicht jede „Datei“ eine normale Datei.

---

**Symbolische Links**

Ein symbolischer Link ist ein Verweis auf eine andere Datei oder ein anderes Verzeichnis.

Beispiel:

    /bin kann auf /usr/bin zeigen

Symbolische Links erkennt man bei ls -l häufig an:

    ->

Beispiel:

    bin -> usr/bin

Nutzen:

    Kompatibilität

    Abkürzungen

    flexible Pfade

    Verweise auf gemeinsame Orte

Merksatz:

    Symbolischer Link = Verweis.

---

**Mountpoints**

Ein Mountpoint ist ein Verzeichnis,
an dem ein Dateisystem eingehängt wird.

Beispiel:

    /mnt/backup

Dort kann zum Beispiel eine externe Festplatte,
eine Partition
oder ein Netzlaufwerk eingebunden werden.

Wichtig:

    Das Dateisystem erscheint dann an dieser Stelle im Verzeichnisbaum.

Merksatz:

    Mountpoint = Einhängepunkt im Verzeichnisbaum.

---

**Warum Linux keine Laufwerksbuchstaben nutzt**

Windows nutzt oft Laufwerksbuchstaben:

    C:

    D:

    E:

Linux nutzt stattdessen einen einheitlichen Verzeichnisbaum.

Beispiel:

    /

    /home

    /mnt/backup

    /media/usb

Vorteil:

    Alle Dateisysteme erscheinen an einer Stelle im Baum.
    Programme können mit festen Pfaden arbeiten,
    unabhängig davon,
    welches Gerät darunter eingebunden ist.

Merksatz:

    Linux hängt Laufwerke in den Verzeichnisbaum ein.

---

**Groß- und Kleinschreibung**

Linux unterscheidet bei Dateinamen zwischen Groß-
und Kleinschreibung.

Diese Dateien wären unterschiedlich:

    Datei.txt

    datei.txt

    DATEI.txt

Wichtig:

    Befehle,
    Pfade
    und Dateinamen müssen exakt geschrieben werden.

Merksatz:

    Linux ist case-sensitive.

---

**Leerzeichen in Dateinamen**

Leerzeichen in Dateinamen können in der Shell Probleme verursachen,
wenn sie nicht korrekt behandelt werden.

Beispiel:

    Meine Datei.txt

Mögliche Schreibweisen:

    "Meine Datei.txt"

oder:

    Meine\ Datei.txt

Besser für Server und Skripte:

    meine_datei.txt

    meine-datei.txt

Merksatz:

    Leerzeichen in Dateinamen besser vermeiden,
    besonders in Skripten.

---

**Dateiendungen unter Linux**

Linux ist weniger abhängig von Dateiendungen als Windows.

Eine Datei kann ausführbar sein,
wenn sie die passenden Rechte besitzt,
nicht nur,
weil sie eine bestimmte Endung hat.

Beispiele:

    script.sh

    backup

    programm

Trotzdem sind Endungen nützlich,
um Dateien leichter zu erkennen.

Beispiele:

    .txt

    .conf

    .log

    .sh

    .tar.gz

Merksatz:

    Unter Linux sind Rechte wichtiger als Dateiendung.

---

**Wichtige Befehle zu Pfaden und Verzeichnissen**

| Befehl | Bedeutung |
|---|---|
| pwd | aktuelles Verzeichnis anzeigen |
| ls | Inhalt anzeigen |
| ls -l | ausführliche Liste anzeigen |
| ls -a | versteckte Dateien anzeigen |
| cd | Verzeichnis wechseln |
| cd .. | eine Ebene höher |
| cd ~ | ins Home-Verzeichnis |
| mkdir | Verzeichnis erstellen |
| rmdir | leeres Verzeichnis löschen |
| tree | Verzeichnisbaum anzeigen, falls installiert |

Merksatz:

    pwd,
    ls
    und cd sind Grundbefehle für Navigation.

---

**Typische Beispiele**

Aktuelles Verzeichnis anzeigen:

    pwd

In das Home-Verzeichnis wechseln:

    cd ~

Nach /etc wechseln:

    cd /etc

Eine Ebene nach oben wechseln:

    cd ..

Inhalt anzeigen:

    ls

Ausführliche Liste anzeigen:

    ls -l

Auch versteckte Dateien anzeigen:

    ls -a

Verzeichnis erstellen:

    mkdir testordner

Merksatz:

    Erst wissen,
    wo man ist.
    Dann Befehl ausführen.

---

**Typische Prüfungsfragen**

| Frage | Kurzantwort |
|---|---|
| Was ist /? | Root-Verzeichnis des Dateisystems |
| Was ist /root? | Home-Verzeichnis des Root-Benutzers |
| Was ist root? | administrativer Benutzer |
| Wo liegen viele Konfigurationsdateien? | /etc |
| Wo liegen viele Logs? | /var/log |
| Wo liegen Benutzerverzeichnisse? | /home |
| Was bedeutet ~? | eigenes Home-Verzeichnis |
| Was bedeutet ..? | übergeordnetes Verzeichnis |
| Was ist ein absoluter Pfad? | Pfad ab / |
| Was ist ein relativer Pfad? | Pfad relativ zum aktuellen Verzeichnis |
| Was ist ein Mountpoint? | Einhängepunkt für ein Dateisystem |
| Was bedeutet versteckte Datei? | Name beginnt mit Punkt |

---

**Typische Prüfungsfallen**

| Falle | Richtig denken |
|---|---|
| / und /root verwechseln | / ist Dateisystemwurzel, /root ist Root-Home |
| root und / verwechseln | root ist Benutzer, / ist Verzeichnis |
| absolute und relative Pfade verwechseln | absolut beginnt mit / |
| ~ als normales Zeichen verstehen | ~ steht für Home-Verzeichnis |
| /tmp dauerhaft nutzen | /tmp ist temporär |
| /etc löschen oder blind ändern | enthält wichtige Konfiguration |
| Logs nicht unter /var/log suchen | /var/log ist zentral |
| Groß- und Kleinschreibung ignorieren | Linux unterscheidet |
| Leerzeichen in Skripten vergessen | Anführungszeichen oder Escape nötig |
| Mountpoint nicht verstehen | Dateisystem wird in Verzeichnis eingehängt |

---

**IHK-sichere Kurzformulierung**

Linux verwendet einen hierarchischen Verzeichnisbaum, der beim Root-Verzeichnis / beginnt. Alle Dateien, Verzeichnisse, Geräte und eingebundenen Dateisysteme befinden sich unterhalb dieses Baums. Ein absoluter Pfad beginnt immer mit /, ein relativer Pfad bezieht sich auf das aktuelle Verzeichnis. Benutzerdateien liegen meist unter /home, systemweite Konfigurationen unter /etc und Logdateien häufig unter /var/log. Das Home-Verzeichnis des administrativen Benutzers root ist /root und darf nicht mit dem Root-Verzeichnis / verwechselt werden. Datenträger werden unter Linux nicht über Laufwerksbuchstaben angesprochen, sondern an Mountpoints in den Verzeichnisbaum eingehängt.

---

**Merksätze**

    Unter Linux beginnt alles bei /.

    / ist das Root-Verzeichnis.

    root ist der administrative Benutzer.

    /root ist das Home-Verzeichnis von root.

    /home enthält Benutzerverzeichnisse.

    /etc enthält Konfigurationen.

    /var enthält veränderliche Daten.

    /var/log enthält Logs.

    /tmp ist temporär.

    /usr enthält Programme und Ressourcen.

    /dev enthält Gerätedateien.

    /proc enthält Prozess- und Kernelinformationen.

    /sys enthält System- und Geräteinformationen.

    /mnt ist oft für manuelle Mounts.

    /media ist oft für Wechselmedien.

    /opt ist für optionale Zusatzsoftware.

    Absoluter Pfad beginnt mit /.

    Relativer Pfad hängt vom aktuellen Verzeichnis ab.

    pwd zeigt das aktuelle Verzeichnis.

    cd wechselt das Verzeichnis.

    . bedeutet aktuelles Verzeichnis.

    .. bedeutet übergeordnetes Verzeichnis.

    ~ bedeutet eigenes Home-Verzeichnis.

    Punkt am Anfang bedeutet versteckte Datei.

    Linux unterscheidet Groß- und Kleinschreibung.

    Laufwerke werden unter Linux eingehängt,
    nicht als C: oder D: angezeigt.

    Mountpoint = Einhängepunkt im Verzeichnisbaum.