🧭 1. Der Unix-Dateibaum & Pfad-Navigation
In Unix gibt es keine Laufwerksbuchstaben (wie C: oder D:). Alles entspringt dem Root-Verzeichnis / (Single Root Tree). Wir unterscheiden strikt zwischen absoluten und relativen Pfaden:
# Wo bin ich?
pwd # Ausgabe: /home/devops/projects
# Relative vs. Absolute Navigation:
cd /var/log/nginx # Absoluter Pfad: Beginnt immer mit '/'
cd ../../etc # Relativer Pfad: Zwei Ebenen hoch, dann in 'etc'
cd ~ # Wechselt ins Home-Verzeichnis (/home/user)
cd - # Wechselt zum vorherigen Verzeichnis zurück
# Detailliertes Listing mit Berechtigungen und Dateigrößen:
ls -lah # -l: Long Format, -a: Versteckte Dateien, -h: Human-readable (KB/MB)
📁 2. Dateisystem-Operationen & Mächtiges Globbing
Als DevOps-Ingenieur erstellst, kopierst und reorganisierst du Konfigurationsdateien im Sekundentakt. Die Shell bietet hierfür mächtige Werkzeuge:
# 🎯 1. Verzeichnisse verschachtelt anlegen:
mkdir -p app/{config,src/{models,views},logs,tests}
# 🎯 2. Dateien mit Brace Expansion massenweise erstellen:
touch app/src/models/{user,order,payment}.py app/config/{dev,staging,prod}.yaml
# 🎯 3. Shell-Globbing (Wildcards):
cp app/config/*.yaml /backup/configs/ # Alle .yaml Dateien kopieren
mv app/logs/app_2026-??.log /archive/logs/ # Matcht genau 2 Zeichen für den Monat (z.B. 01..12)
rm -rf /tmp/build_cache/ # Rekursives Löschen ohne Bestätigung
Der Dateibaum: Stell dir das Dateisystem wie ein riesiges, strukturiertes Hochregallager vor. / ist der Haupteingang. mkdir -p baut dir sofort eine ganze Gasse mit Fachböden auf.
Globbing (* und {a,b}): Anstatt jedes Paket einzeln mit der Hand zu scannen, hältst du eine Schablone hoch: *.yaml greift automatisch alle blauen Kisten aus dem Regal, während {dev,prod} mit einem Handgriff zwei vorgefertigte Etiketten druckt!
📑 3. Cheat-Sheet: Navigation & Wildcards
| Befehl / Muster | Beispiel | Bedeutung & DevOps-Einsatz |
|---|---|---|
mkdir -p <pfad> |
mkdir -p /srv/app/releases |
Erstellt Elternverzeichnisse automatisch ohne Fehler |
cp -r <src> <dst> |
cp -r ./templates /etc/nginx/ |
Kopiert ganze Verzeichnisbäume rekursiv |
mv <src> <dst> |
mv old.env .env.backup |
Verschiebt oder benennt Dateien atomar um |
rm -rf <pfad> |
rm -rf ./temp_workspace |
Löscht rekursiv und erzwingt Löschen ohne Prompt |
* (Wildcard) |
rm -f *.log |
Matcht 0 oder beliebig viele Zeichen |
? (Single Char) |
ls node_v?.log |
Matcht exakt ein einziges Zeichen |
{a,b,c} |
touch {app,db}_{1..3}.conf |
Brace Expansion zur raschen Permutationserstellung |
🎯 Aufgaben & Checkliste in aufgabe.sh
Setze Variablen bei Pfadangaben in Bash-Skripten stets in doppelte Anführungszeichen: "$basis_dir/src/components". Das verhindert gefürchtete Word Splitting Fehler, falls ein Verzeichnisname einmal Leerzeichen enthält!