Zum Inhalt springen

Navigation

Linux kennt keine Laufwerksbuchstaben. Alles hängt an einer einzigen Wurzel, dem Verzeichnis / (Root). Darunter liegen Systemverzeichnisse mit festen Aufgaben, hier nur die, die du in diesem Modul brauchst. Den vollständigen Aufbau lernst du in Modul 4.

flowchart TD
    R["/"] --> home["/home"]
    R --> etc["/etc<br/>Konfiguration"]
    R --> tmp["/tmp<br/>temporäre Dateien"]
    R --> usr["/usr<br/>Programme"]
    R --> var["/var<br/>Logs, Daten"]
    home --> user["/home/user  (~)"]
    user --> lg["lernplattform"]
    user --> lab["lab"]

Im Terminal stehst du immer in genau einem Verzeichnis, dem Arbeitsverzeichnis (working directory). Alle Befehle beziehen sich darauf, solange du nichts anderes angibst. Die drei Navigationsbefehle:

Befehl Steht für Zweck
pwd print working directory Wo bin ich?
cd change directory Wohin?
ls list Was liegt hier?
Terminal-Fenster
pwd

Nach dem Login antwortet pwd mit /home/user, deinem Home-Verzeichnis. Dasselbe zeigt der Prompt verkürzt als ~. Gewöhn dir an, pwd zu tippen, sobald du unsicher bist. Es ist der billigste Befehl überhaupt.

Ein Pfad beschreibt den Weg zu einer Datei oder einem Verzeichnis. Es gibt zwei Arten:

  • Absolute Pfade beginnen mit / und gehen von der Wurzel aus. Sie funktionieren von überall: /etc/hostname, /home/user/lab.
  • Relative Pfade beginnen nicht mit / und gehen vom aktuellen Arbeitsverzeichnis aus. Stehst du in /home/user, meint lab/a das Verzeichnis /home/user/lab/a.

Dazu drei Abkürzungen, die in jedem Pfad erlaubt sind:

Zeichen Bedeutung
. Das aktuelle Verzeichnis
.. Das übergeordnete Verzeichnis (eine Stufe hoch)
~ Dein Home-Verzeichnis, egal wo du stehst

../.. geht zwei Stufen hoch, ~/lab ist immer /home/user/lab, und ./skript.sh meint die Datei skript.sh genau hier.

Terminal-Fenster
cd /usr/local/bin # absolut: von überall aus
cd /usr # absolut
cd local/bin # relativ von /usr aus, landet wieder in /usr/local/bin
cd .. # eine Stufe hoch: /usr/local
cd ../.. # zwei Stufen hoch: /
cd # ohne Argument: nach Hause
cd ~/lernplattform
cd - # zurück ins vorherige Verzeichnis

cd - ist besonders praktisch: Es pendelt zwischen den letzten zwei Verzeichnissen hin und her und gibt dabei aus, wo du gelandet bist.

Hands-on: Tippe die Sequenz oben ab. Sag dir vor jedem cd laut, wo du landen wirst, und prüfe mit pwd nach. Beobachte, wie sich der Prompt verändert.

Fehler, die jeder einmal macht:

bash: cd: lokal/bin: No such file or directory

Das heisst fast immer: Tippfehler, oder der relative Pfad stimmt vom aktuellen Standort aus nicht. pwd und Tab helfen.

Ohne Argument zeigt ls das aktuelle Verzeichnis, mit Argument ein beliebiges anderes. Die Optionen machen den Unterschied:

Option Lang Wirkung
-l Lange Liste: Rechte, Besitzer, Grösse, Änderungsdatum
-a --all Auch versteckte Einträge (Name beginnt mit .)
-h --human-readable Grössen als 4.0K, 12M statt Bytes, nur zusammen mit -l sinnvoll
-t Nach Änderungszeit sortiert, neueste zuerst
-r --reverse Reihenfolge umkehren
-R --recursive Auch alle Unterverzeichnisse
-d --directory Das Verzeichnis selbst statt seines Inhalts
Terminal-Fenster
ls
ls -l
ls -la ~
ls -lah /var/log
ls -lt /etc
ls -ltr /etc # neueste zuletzt, praktisch bei langen Listen
ls -R /etc/apt
ls -ld /etc

Eine Zeile aus ls -l liest sich so:

drwxr-xr-x 2 user user 4096 Nov 5 10:12 lab
-rw-r--r-- 1 user user 42 Nov 5 10:15 notizen.txt

Das erste Zeichen sagt, was es ist: d für Verzeichnis, - für normale Datei, l für einen Link. Die neun Zeichen danach sind die Zugriffsrechte, die in Modul 4 ausführlich drankommen. Dann folgen Anzahl Links, Besitzer, Gruppe, Grösse, Änderungszeit und Name.

Hands-on: Versteckte Dateien. In deinem Home liegen Dateien wie .bashrc und .bash_history, die ls ohne -a verschweigt. Die Einträge . und .. am Anfang der Liste sind das aktuelle und das übergeordnete Verzeichnis selbst.

Terminal-Fenster
cd
ls
ls -a
ls -la

tree zeigt ein Verzeichnis als Baum. Auf Ubuntu Server ist es nicht vorinstalliert:

Terminal-Fenster
sudo apt install tree
tree ~/lernplattform
tree -L 2 /etc/apt # nur zwei Ebenen tief
tree -d /usr/share/doc # nur Verzeichnisse
tree -a ~ # auch versteckte Einträge

Für die Übungen in diesem Modul ist tree das Werkzeug der Wahl, um das Ergebnis zu kontrollieren.

Lösung anzeigen
Terminal-Fenster
cd ~/lernplattform
script labs/linux/03-terminal/navigation.txt
cd /var/log
ls -ltrh
cd ../../etc
pwd
cd
cd -
ls -R /etc/apt
# 5: ls -l /etc zeigt den Inhalt von /etc, ls -ld /etc zeigt den Eintrag /etc selbst.
# 5: ls -a zeigt auch versteckte Einträge (Name beginnt mit Punkt). Die ersten zwei,
# . und .., sind das aktuelle und das übergeordnete Verzeichnis.
exit

Selbstcheck · 5 Fragen

1. Du stehst in `/home/user/lab`. Wohin führt `cd ../..`?
2. Welche Pfade sind absolut? (mehrere Antworten möglich)
3. Was macht `cd` ohne Argument?
4. Welche Option zeigt Dateien, deren Name mit einem Punkt beginnt?
5. Was bedeutet das `d` am Anfang einer Zeile von `ls -l`?