Linux · Tag 1 · Kapitel 08 von 12

Navigation im Terminal — pwd, cd & ls

Jetzt wird's praktisch. Drei Befehle — pwd, cd, ls — sind dein Werkzeug für 80 % aller Admin-Sitzungen. Wir gehen sie in allen Spielarten durch und schließen mit Lab 1.1 ab: dem HanovaTech-Verzeichnis-Detektiv.

📚 Kapitel 08 ⏱️ ca. 25 min Theorie + 35 min Lab 🧪 Lab 1.1
8.1

pwd — wo bin ich überhaupt?

Grundlage

pwd = print working directory. Zeigt das absolute aktuelle Verzeichnis.

bash
$ pwd
/home/admin

# Mit -P folgt es symbolischen Links zum echten Pfad
$ cd /bin           # auf modernen Distros ist /bin ein Symlink
$ pwd
/bin
$ pwd -P
/usr/bin            # so heißt das Verzeichnis "wirklich"
💡
Praxis-Tipp

Bei langen SSH-Sessions kann der Prompt auf ~ oder configs zeigen — dann weißt du nicht mehr, ob du in /etc/nginx/conf.d/configs oder /var/log/configs steckst. pwd klärt das in einer Sekunde.

8.2

cd — alle Tricks

Pflicht

cd = change directory. Wechselt das aktuelle Verzeichnis.

Die wichtigsten Varianten

bash
cd /etc           # absoluter Pfad: nach /etc
cd /var/log/      # tieferer absoluter Pfad
cd configs        # relativer Pfad: ins Unterverzeichnis "configs"

cd ..             # ein Verzeichnis HOCH
cd ../..          # zwei Verzeichnisse hoch
cd ../etc         # rüber: ein hoch, dann nach etc

cd ~              # ins eigene Home (~ = $HOME)
cd                # auch ins Home (ohne Argument)
cd ~admin         # ins Home von User admin
cd $HOME          # alternative Schreibweise

cd -              # ZURÜCK zum vorherigen Verzeichnis
                  # extrem nützlich: hin- und herspringen!
cd /              # zur Wurzel

Das berühmte cd -: Toggle zwischen zwei Verzeichnissen

bash
$ pwd
/home/admin
$ cd /var/log/
$ pwd
/var/log
$ cd -            # zurück nach /home/admin
/home/admin
$ cd -            # wieder nach /var/log
/var/log
💡
Praxis-Tipp

cd - ist Gold wert, wenn du zwischen zwei tiefen Pfaden wechselst (z.B. /etc/nginx/conf.d/ und /var/log/nginx/). Ein Tastendruck statt 30 Zeichen.

8.3

Absolute vs. relative Pfade

Wichtig

Ein Pfad ist die Adresse einer Datei im Dateibaum. Es gibt zwei Schreibweisen:

TypBeginnt mitBedeutungBeispiel
Absolut / Vollständig ab der Wurzel — funktioniert immer, egal wo du gerade bist /etc/hosts
Relativ Name, ., .. oder ~ Vom aktuellen Verzeichnis aus gesehen configs/nginx.conf

Sonderzeichen-Übersicht

ZeichenBedeutung
/Wurzelverzeichnis
~mein Home-Verzeichnis
~userHome-Verzeichnis eines anderen Users
.aktuelles Verzeichnis
..ein Verzeichnis höher
-vorheriges Verzeichnis (nur in cd)

Visuell: gleicher Zielpunkt, zwei Wege

Du bist hier: /home/admin │ ▼ Ziel: /etc/hosts ABSOLUT: cd /etc/hosts (oder cat /etc/hosts) ^ └── beginnt mit /, eindeutig RELATIV: cd ../../etc/hosts ^ └── relativ zu /home/admin: .. → /home .. → / etc → /etc hosts → /etc/hosts
💡
Faustregel

In Skripten immer absolute Pfade — sie sind eindeutig und unabhängig vom Aufruf-Verzeichnis. In der interaktiven Session relative Pfade — sie sind kürzer und passen zur „Wanderung“ durch den Baum.

8.4

ls ausführlich — der meistgenutzte Befehl überhaupt

Pflicht

ls = list. Zeigt den Inhalt eines Verzeichnisses. Hat über 50 Optionen — du brauchst nur ein halbes Dutzend.

Die wichtigsten Optionen

OptionWas sie bewirkt
-lLong-Listing — Details: Rechte, Owner, Größe, Datum
-aAll — auch versteckte Dateien (beginnen mit „.“)
-hHuman-readable — Größen als 1.5K, 3.2M, 12G
-tSortierung nach Time (Änderung), neueste zuerst
-SSortierung nach Size, größte zuerst
-rReverse — Sortierung umdrehen
-RRekursiv — auch Unterverzeichnisse
-dnur das Verzeichnis selbst, nicht den Inhalt
-1eine Datei pro Zeile (gut für Skripte)
--color=autofarbige Ausgabe (Default auf Rocky)

Klassische Kombinationen

bash
ls               # einfache Liste
ls -l            # Long-Listing
ls -la           # plus versteckte Dateien
ls -lh           # plus human-readable
ls -lah          # alles zusammen (Klassiker!)
ls -laht         # plus nach Zeit sortiert, neueste oben
ls -lahS         # plus nach Größe sortiert, größte oben
ls -laR /etc     # rekursiv durch /etc — Vorsicht, viel Output!
ls -d */         # nur Verzeichnisse im aktuellen Pfad
8.5

ls -l Zeile für Zeile lesen

Tief

Eine ls -l-Zeile ist vollgepackt mit Information. Hier eine typische Zeile und was alle Teile bedeuten:

-rw-r--r-- 1 admin admin 1.2K Mai 21 10:42 notizen.txt │ │ │ │ │ │ │ │ │ │ │ │ │ └── Dateiname │ │ │ │ │ └──────────────── Datum der letzten Änderung │ │ │ │ └────────────────────── Größe in Bytes (mit -h human-readable) │ │ │ └───────────────────────────── Gruppe │ │ └──────────────────────────────────── Eigentümer (Owner) │ └─────────────────────────────────────── Anzahl Hardlinks └────────────────────────────────────────────────── Dateityp + Berechtigungen

Spalte 1 im Detail: Typ und Rechte

- rwx r-x r-- │ │ │ │ │ │ │ └── Rechte für ALLE anderen (others) │ │ └───────── Rechte für die GRUPPE │ └──────────────── Rechte für den BESITZER └───────────────────── Dateityp Dateityp: - reguläre Datei · d Verzeichnis · l Symlink b Blockdevice · c Chardevice · s Socket · p Pipe Rechte: r = read (lesen) w = write (schreiben) x = execute (ausführen / bei Verzeichnis: betreten) - = Recht nicht vorhanden

Im Beispiel -rw-r--r-- liest sich das so:

  • - → reguläre Datei (kein Verzeichnis, kein Symlink)
  • rw- → Besitzer darf lesen + schreiben, nicht ausführen
  • r-- → Gruppe darf nur lesen
  • r-- → Alle anderen dürfen nur lesen
🔒
Vorausschau

Berechtigungen mit chmod und chown setzen wir an Tag 2 ausführlich. Für heute reicht zu wissen, dass jede Datei drei mal drei Rechte hat: für Besitzer, Gruppe und Andere.

8.6

tree installieren — der hübschere Bruder von ls -R

Praxis

tree zeigt Verzeichnisbäume als ASCII-Baum. Ist auf Rocky Minimal nicht vorinstalliert — flott nachholen:

bash
sudo dnf install tree -y

# In Aktion
tree /etc/ssh/

# Tiefe begrenzen
tree -L 2 /etc/

# Mit versteckten Dateien
tree -a ~/

# Nur Verzeichnisse, keine Dateien
tree -d /var/log/

# Größen anzeigen
tree -h /var/log/

Beispiel-Output:

/etc/ssh/ ├── ssh_config ├── ssh_config.d │ └── 50-redhat.conf ├── sshd_config └── sshd_config.d └── 50-cloud-init.conf 2 directories, 4 files
8.7

Tab-Completion in der Praxis

Speed-Up

Wir haben Tab schon in Kapitel 06 angesprochen. Hier konkret beim Navigieren — nie wieder lange Pfade tippen:

tab demos
# Du willst nach /usr/share/doc/openssh/
$ cd /us<TAB>          # → cd /usr/
$ cd /usr/sh<TAB>       # → cd /usr/share/
$ cd /usr/share/d<TAB>  # → cd /usr/share/doc/
$ cd /usr/share/doc/op<TAB>
                       # → cd /usr/share/doc/openssh/

# Bei Mehrdeutigkeit zweimal Tab:
$ ls /etc/host<TAB><TAB>
hostname  hosts  hosts.allow  hosts.deny
Geschwindigkeit

Ein erfahrener Admin tippt selten mehr als 3–4 Buchstaben am Stück. Der Rest ist Tab. Wer den Reflex hat, schreibt Befehle in einem Viertel der Zeit — und macht weniger Tippfehler.

8.8

Typische Anfänger-Fehler

Vorsicht
Fehler 1 — Case-Sensitivity vergessen

Linux unterscheidet streng zwischen Groß- und Kleinschreibung. Datei.txt, datei.txt und DATEI.TXT sind drei verschiedene Dateien. Anders als Windows. cd Documents funktioniert nicht, wenn der Ordner documents heißt.

Fehler 2 — Vergessenes / vor absolutem Pfad

cd etc sucht relativ nach einem Verzeichnis etc im aktuellen Standort — was meistens nicht existiert. Für den absoluten Pfad muss vorne /: cd /etc.

Fehler 3 — Tippfehler bei langen Pfaden

cd /etc/syslmd/system statt /etc/systemd/system — klassischer Buchstabendreher. Lösung: immer Tab nutzen. Vertippt sich Tab, weiß man sofort, dass der Pfad falsch ist.

Fehler 4 — Leerzeichen in Dateinamen

cd Mein Ordner versucht in „Mein“ zu wechseln und gibt „Ordner“ als zweites Argument an cd weiter. Lösungen: cd "Mein Ordner" (Quotes) oder cd Mein\ Ordner (Backslash-Escape). Profis vermeiden Leerzeichen in Dateinamen ganz und nehmen mein-ordner oder mein_ordner.

🧪 Lab 1.1 HanovaTech-Verzeichnis erkunden 35 min
📧 E-Mail vom Senior-Admin (fiktives HanovaTech-Szenario):
„Willkommen im Team! Bevor du irgendwas auf dem System veränderst, lerne es erstmal kennen. Geh die folgenden Aufgaben durch — alle ohne sudo, du sollst nur LESEN und navigieren. Sag Bescheid, wenn du fertig bist oder feststeckst.“
Teil A — Orientierung (5 min)
  1. Schalte deine VM an, logge dich als admin ein.
  2. In welchem Verzeichnis stehst du direkt nach dem Login? Welcher Befehl zeigt das an?
  3. Wer bist du, wie heißt die Maschine, wie spät ist es? Nutze drei kleine Befehle.
  4. Welche Linux-Version läuft hier? Schau in /etc/os-release.
bash
# 2) aktuelles Verzeichnis
pwd
# erwartet: /home/admin

# 3) wer + wo + wann
whoami
hostname
date

# 4) Linux-Version
cat /etc/os-release
Teil B — Navigieren (10 min)
  1. Wechsle nach /etc und liste alle Dateien im Long-Format, einschließlich versteckter.
  2. Zeige den Inhalt der Datei /etc/hostname an. Was steht drin?
  3. Wechsle direkt nach /var/log — mit einem einzigen Befehl.
  4. Wie viele Einträge hat dieses Verzeichnis ungefähr? (Tipp: ls | wc -l)
  5. Gehe ein Verzeichnis hoch. Wo bist du jetzt? Prüfe mit pwd.
  6. Wechsle zurück ins vorherige Verzeichnis — mit nur zwei Zeichen.
bash
# 5) /etc Long+Hidden
cd /etc
ls -la

# 6) hostname-Datei
cat /etc/hostname
# erwartet: rocky-tn01

# 7) direkt nach /var/log
cd /var/log

# 8) Anzahl Einträge
ls | wc -l

# 9) ein Verzeichnis hoch
cd ..
pwd
# erwartet: /var

# 10) zurück ins vorherige
cd -
# springt zurück nach /var/log
Teil C — ls in allen Spielarten (10 min)
  1. Wechsle in dein Home-Verzeichnis — drei verschiedene Schreibweisen sollst du aufschreiben.
  2. Liste den Inhalt deines Homes inklusive versteckter Dateien.
  3. Welche versteckten Konfigurationsdateien (Dotfiles) findest du? Nenne drei.
  4. Zeige nur die größten Dateien in /var/log (nach Größe sortiert, human-readable, Long-Listing).
  5. Zeige in /var/log die neuesten 5 Dateien. Tipp: nach Zeit sortieren, dann | head -5.
  6. Liste alle Verzeichnisse in /etc, die mit „s“ anfangen. Tipp: ls -d /etc/s*/.
bash
# 11) drei Schreibweisen
cd ~
cd
cd $HOME
# oder: cd /home/admin

# 12) Home mit versteckten Dateien
ls -la ~

# 13) typische Dotfiles
# .bashrc, .bash_profile, .bash_history, .bash_logout
# .ssh/, .config/ (falls vorhanden)

# 14) /var/log nach Größe
ls -lhS /var/log | head -10

# 15) /var/log neueste 5
ls -lt /var/log | head -6
# (head -6, weil erste Zeile "total ..." ist)

# 16) /etc-Verzeichnisse mit s am Anfang
ls -d /etc/s*/
Teil D — Detektivarbeit (10 min)
  1. Wo liegt das Binary von ls selbst? Tipp: which ls oder type ls.
  2. Folge dem Symlink von /bin mit ls -l /. Wohin zeigt /bin auf Rocky 9?
  3. Wechsle nach /proc/1/. Wer oder was ist Prozess 1? (Tipp: cat cmdline — die Ausgabe hat keine Zeilenumbrüche, das ist normal).
  4. Wie viele CPUs hat dein System? Schau in /proc/cpuinfo und zähle die Zeilen mit „processor“. Tipp: grep -c processor /proc/cpuinfo.
bash
# 17) Wo liegt ls?
which ls
# /usr/bin/ls
type ls
# ls is aliased to `ls --color=auto'   (Rocky-Default)

# 18) Symlink-Ziel von /bin
ls -l /
# u.a.: bin -> usr/bin

# 19) Prozess 1
cd /proc/1
cat cmdline
# /usr/lib/systemd/systemd ... (alles in einer Zeile)
# Prozess 1 = systemd, der Init-Prozess

# 20) Anzahl CPUs
grep -c processor /proc/cpuinfo
# 2  (so viele vCPUs hast du der VM gegeben)
🌟 Bonus für schnelle Teilnehmer (5–10 min)
  1. Installiere mit sudo das Paket tree. Zeige damit dein Home-Verzeichnis bis Tiefe 2 — auch versteckte Dateien.
  2. Welches sind die drei größten Dateien in /usr/bin/? Tipp: ls -lhS + head.
  3. Zeige nur die Verzeichnisse in deinem Home — kein File darf in der Ausgabe sein.
  4. Erkläre kurz in eigenen Worten: Was ist der Unterschied zwischen cd, cd ~ und cd /?
bash
# 21) tree installieren und Home anzeigen
sudo dnf install tree -y
tree -L 2 -a ~

# 22) drei größte Dateien in /usr/bin
ls -lhS /usr/bin/ | head -4
# head -4 weil erste Zeile "total ..." ist

# 23) nur Verzeichnisse im Home
ls -ld ~/*/
# oder
ls -d ~/*/

# 24) Erklärung
# cd     → ins Home des aktuellen Users (Kurzform von cd ~)
# cd ~   → ins Home des aktuellen Users (explizit)
# cd /   → zur Wurzel des Dateisystems
#
# cd und cd ~ tun also dasselbe.
# cd / ist eine ganz andere Stelle: die Spitze des Baums.
🎉
Lab 1.1 geschafft?

Wenn ja: melde dich beim Trainer oder hak es auf dem Whiteboard ab. In Kapitel 09 lernen wir Dateien und Ordner zu erstellen und zu löschen — bisher haben wir nur gelesen und navigiert.

🎯

Kontrollfragen zum Kapitel

Selbst-Check
  1. Wofür steht pwd und welche Information gibt es zurück?
  2. Was machen die folgenden Befehle: cd, cd ~, cd .., cd -, cd /?
  3. Was unterscheidet einen absoluten von einem relativen Pfad?
  4. Welche fünf häufigsten ls-Optionen gibt es und was bedeuten sie?
  5. Was sagt das erste Zeichen einer ls -l-Ausgabezeile aus?
  6. Wie zeigst du nur Verzeichnisse, keine Dateien?
  7. Warum ist Tab-Completion so wichtig?
  8. Nenne drei typische Anfänger-Fehler beim Navigieren.
  1. print working directory — gibt den absoluten Pfad des aktuellen Arbeitsverzeichnisses aus.
  2. cd = Home. cd ~ = Home (explizit). cd .. = ein Verzeichnis hoch. cd - = ins vorherige Verzeichnis. cd / = zur Wurzel.
  3. Absolut: beginnt mit /, eindeutig ab der Wurzel. Relativ: beginnt mit Name, ., .. oder ~ — vom aktuellen Standort aus.
  4. -l long, -a all (auch hidden), -h human-readable, -t nach Time, -S nach Size, -R rekursiv, -d nur Verzeichnis selbst (mind. fünf nennen).
  5. Den Dateityp: - = reguläre Datei, d = Verzeichnis, l = Symlink, b/c = Block-/Chardevice, …
  6. ls -d */ oder kombiniert ls -ld */.
  7. Spart Tipparbeit, vermeidet Tippfehler, beweist sofort wenn ein Pfad falsch ist (kein Tab-Treffer = nichts existiert).
  8. Case-Sensitivity vergessen, fehlendes / vor absolutem Pfad, Leerzeichen in Dateinamen nicht escaped, Tippfehler bei langen Pfaden.