pwd — wo bin ich überhaupt?
Grundlage
pwd = print working
directory. Zeigt das absolute aktuelle Verzeichnis.
$ 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"
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.
cd — alle Tricks
Pflicht
cd = change directory.
Wechselt das aktuelle Verzeichnis.
Die wichtigsten Varianten
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
$ pwd
/home/admin
$ cd /var/log/
$ pwd
/var/log
$ cd - # zurück nach /home/admin
/home/admin
$ cd - # wieder nach /var/log
/var/log
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.
Absolute vs. relative Pfade
WichtigEin Pfad ist die Adresse einer Datei im Dateibaum. Es gibt zwei Schreibweisen:
| Typ | Beginnt mit | Bedeutung | Beispiel |
|---|---|---|---|
| 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
| Zeichen | Bedeutung |
|---|---|
/ | Wurzelverzeichnis |
~ | mein Home-Verzeichnis |
~user | Home-Verzeichnis eines anderen Users |
. | aktuelles Verzeichnis |
.. | ein Verzeichnis höher |
- | vorheriges Verzeichnis (nur in cd) |
Visuell: gleicher Zielpunkt, zwei Wege
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.
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
| Option | Was sie bewirkt |
|---|---|
-l | Long-Listing — Details: Rechte, Owner, Größe, Datum |
-a | All — auch versteckte Dateien (beginnen mit „.“) |
-h | Human-readable — Größen als 1.5K, 3.2M, 12G |
-t | Sortierung nach Time (Änderung), neueste zuerst |
-S | Sortierung nach Size, größte zuerst |
-r | Reverse — Sortierung umdrehen |
-R | Rekursiv — auch Unterverzeichnisse |
-d | nur das Verzeichnis selbst, nicht den Inhalt |
-1 | eine Datei pro Zeile (gut für Skripte) |
--color=auto | farbige Ausgabe (Default auf Rocky) |
Klassische Kombinationen
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
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:
Spalte 1 im Detail: Typ und Rechte
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
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.
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:
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:
Tab-Completion in der Praxis
Speed-UpWir haben Tab schon in Kapitel 06 angesprochen. Hier konkret beim Navigieren — nie wieder lange Pfade tippen:
# 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
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.
Typische Anfänger-Fehler
VorsichtLinux 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.
/ vor absolutem Pfadcd etc sucht relativ nach einem Verzeichnis
etc im aktuellen Standort — was meistens nicht existiert.
Für den absoluten Pfad muss vorne /: cd /etc.
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.
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.
„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.“
- Schalte deine VM an, logge dich als
adminein. - In welchem Verzeichnis stehst du direkt nach dem Login? Welcher Befehl zeigt das an?
- Wer bist du, wie heißt die Maschine, wie spät ist es? Nutze drei kleine Befehle.
- Welche Linux-Version läuft hier? Schau in
/etc/os-release.
# 2) aktuelles Verzeichnis
pwd
# erwartet: /home/admin
# 3) wer + wo + wann
whoami
hostname
date
# 4) Linux-Version
cat /etc/os-release
- Wechsle nach
/etcund liste alle Dateien im Long-Format, einschließlich versteckter. - Zeige den Inhalt der Datei
/etc/hostnamean. Was steht drin? - Wechsle direkt nach
/var/log— mit einem einzigen Befehl. - Wie viele Einträge hat dieses Verzeichnis ungefähr? (Tipp:
ls | wc -l) - Gehe ein Verzeichnis hoch. Wo bist du jetzt? Prüfe mit pwd.
- Wechsle zurück ins vorherige Verzeichnis — mit nur zwei Zeichen.
# 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
- Wechsle in dein Home-Verzeichnis — drei verschiedene Schreibweisen sollst du aufschreiben.
- Liste den Inhalt deines Homes inklusive versteckter Dateien.
- Welche versteckten Konfigurationsdateien (Dotfiles) findest du? Nenne drei.
- Zeige nur die größten Dateien in
/var/log(nach Größe sortiert, human-readable, Long-Listing). - Zeige in
/var/logdie neuesten 5 Dateien. Tipp: nach Zeit sortieren, dann| head -5. - Liste alle Verzeichnisse in
/etc, die mit „s“ anfangen. Tipp:ls -d /etc/s*/.
# 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*/
- Wo liegt das Binary von
lsselbst? Tipp:which lsodertype ls. - Folge dem Symlink von
/binmitls -l /. Wohin zeigt/binauf Rocky 9? - Wechsle nach
/proc/1/. Wer oder was ist Prozess 1? (Tipp:cat cmdline— die Ausgabe hat keine Zeilenumbrüche, das ist normal). - Wie viele CPUs hat dein System? Schau in
/proc/cpuinfound zähle die Zeilen mit „processor“. Tipp:grep -c processor /proc/cpuinfo.
# 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)
- Installiere mit sudo das Paket
tree. Zeige damit dein Home-Verzeichnis bis Tiefe 2 — auch versteckte Dateien. - Welches sind die drei größten Dateien in
/usr/bin/? Tipp:ls -lhS+head. - Zeige nur die Verzeichnisse in deinem Home — kein File darf in der Ausgabe sein.
- Erkläre kurz in eigenen Worten: Was ist der Unterschied zwischen
cd,cd ~undcd /?
# 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.
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- Wofür steht
pwdund welche Information gibt es zurück? - Was machen die folgenden Befehle:
cd,cd ~,cd ..,cd -,cd /? - Was unterscheidet einen absoluten von einem relativen Pfad?
- Welche fünf häufigsten
ls-Optionen gibt es und was bedeuten sie? - Was sagt das erste Zeichen einer
ls -l-Ausgabezeile aus? - Wie zeigst du nur Verzeichnisse, keine Dateien?
- Warum ist Tab-Completion so wichtig?
- Nenne drei typische Anfänger-Fehler beim Navigieren.
- print working directory — gibt den absoluten Pfad des aktuellen Arbeitsverzeichnisses aus.
cd= Home.cd ~= Home (explizit).cd ..= ein Verzeichnis hoch.cd -= ins vorherige Verzeichnis.cd /= zur Wurzel.- Absolut: beginnt mit
/, eindeutig ab der Wurzel. Relativ: beginnt mit Name,.,..oder~— vom aktuellen Standort aus. -llong,-aall (auch hidden),-hhuman-readable,-tnach Time,-Snach Size,-Rrekursiv,-dnur Verzeichnis selbst (mind. fünf nennen).- Den Dateityp:
-= reguläre Datei,d= Verzeichnis,l= Symlink,b/c= Block-/Chardevice, … ls -d */oder kombiniertls -ld */.- Spart Tipparbeit, vermeidet Tippfehler, beweist sofort wenn ein Pfad falsch ist (kein Tab-Treffer = nichts existiert).
- Case-Sensitivity vergessen, fehlendes
/vor absolutem Pfad, Leerzeichen in Dateinamen nicht escaped, Tippfehler bei langen Pfaden.