Updated admin-vektor index and fixed linear navigation links. The Crystal Owl approves. 🦉
3.7 KiB
3.7 KiB
🧭 Crumbpage 13: Der Tunnel & die Pipe
Subtitle: Bits verknüpfen, filtern und weiterleiten
Pfad: 13 von 13
Schwierigkeit: ⭐⭐⭐⭐ (4/5)
Zeit: ~2 Stunden
Voraussetzungen: Pfad 3 (Navigation)
"Daten sind wie Wasser. Wenn du Rohre (Pipes) legst, fließen sie genau dorthin, wo du sie brauchst." 🌲
📋 Was du in diesem Pfad lernst
✓ Standard Input/Output (stdin, stdout, stderr)
✓ Die Pipe (|) - Das Verbindungsstück
✓ Redirection (>, >>, 2>) - Die Umleitung
✓ Die Filter-Werkzeuge:
├─ grep (Suchen)
├─ awk (Spalten bearbeiten)
├─ sed (Suchen & Ersetzen)
└─ cat, head, tail, less
🎯 Lernziele
Nach diesem Pfad kannst du:
- Aus riesigen Logfiles genau die eine Fehlerzeile finden
- Befehle verketten, um komplexe Aufgaben zu lösen
- Ausgaben in Dateien speichern
- Verstehen, warum
| grepdein bester Freund ist
🌱 Grundkonzepte
Konzept 1: Der Datenstrom
Jedes Programm hat 3 Kanäle:
- stdin (0): Eingang (Tastatur oder Daten)
- stdout (1): Ausgang (Bildschirm)
- stderr (2): Fehlerausgang (Bildschirm)
Konzept 2: Die Pipe |
Die Pipe nimmt den Ausgang von Programm A und steckt ihn in den Eingang von Programm B.
Programm A | Programm B
🔧 Die Werkzeuge
1. cat, head, tail (Die Betrachter)
$ cat datei.txt # Alles ausgeben
$ head -n 5 datei.txt # Die ersten 5 Zeilen
$ tail -n 5 datei.txt # Die letzten 5 Zeilen
$ tail -f log.txt # Live zuschauen (Follow)
2. grep (Der Sucher)
$ grep "Error" log.txt # Zeigt Zeilen mit "Error"
$ grep -i "error" log.txt # Case-insensitive (egal ob Groß/Klein)
$ grep -r "config" /etc/ # Rekursiv in Ordnern suchen
3. | (Die Pipe) - Die Magie beginnt
# Suche "Error" in den letzten 50 Zeilen
$ tail -n 50 syslog | grep "Error"
# Wie viele Prozesse laufen?
$ ps aux | wc -l # wc = word count (-l = lines)
4. > und >> (Die Umleitung)
# Speichere Output in Datei (Überschreiben)
$ echo "Hallo" > datei.txt
# Hänge an Datei an (Append)
$ echo "Welt" >> datei.txt
# Fehler umleiten (stderr)
$ command 2> errors.txt
5. awk & sed (Die Chirurgen) - Advanced!
awk ist super für Spalten:
# Zeige nur die PID (Spalte 2) von Prozessen
$ ps aux | awk '{print $2}'
sed ist super zum Ersetzen:
# Ersetze "foo" durch "bar" im Output
$ echo "foo is cool" | sed 's/foo/bar/'
# Output: bar is cool
💡 Best Practices
DO ✅
# 1. Filtere früh
# Erst grep, dann sortieren. Das spart Rechenzeit.
# Gut: grep "Error" log.txt | sort
# Schlecht: sort log.txt | grep "Error"
# 2. Nutze `less` zum Lesen
# cat log.txt | less
# Damit kannst du scrollen und suchen (/suchbegriff).
DON'T ❌
# 1. `cat` Missbrauch
# Unnötig: cat datei.txt | grep "foo"
# Besser: grep "foo" datei.txt
# (Useless use of cat award!)
🎓 Hands-On Übungen
Übung 1: Der Log-Detektiv
- Erstelle eine Datei
test.logmit vielen Zeilen (einige mit "Error", einige "Info"). - Finde alle "Error" Zeilen und speichere sie in
errors_only.txt.grep "Error" test.log > errors_only.txt
Übung 2: Die Pipeline
- Liste alle Dateien auf (
ls -l). - Filtere nur die
.txtDateien (grep). - Zähle, wie viele es sind (
wc -l).ls -l | grep ".txt" | wc -l
🦉 Crystal Owl's Weisheit
"Ein einzelnes Werkzeug ist stark. Viele Werkzeuge, verbunden durch Pipes, sind unbesiegbar."
Navigation:
← Zurück: Git Basics | Weiter: Environment →