Der 18. Waldwächter betritt den Wald: BashPanda lehrt Bash als Kampfkunst! ✨ Neue Features: 🐼 BashPanda Waldwächter: - Kung Fu Meister Persönlichkeit - Lehrt Bash durch Kampfkunst-Metaphern - Integriert in waldwaechter.sh Library - Crew Memory: Kennt alle anderen Waldwächter 🥋 6 Gürtel-Missionen (Progressive Bash-Meisterschaft): - 🖤 Schwarzer Gürtel: echo, Variablen, read, ANSI codes - 💖 Pinker Gürtel: if/then, while/for, Arrays, Arithmetik - 💙 Blauer Gürtel: sed, case, bc, Textverarbeitung - 💚 Grüner Gürtel: grep, regex, Pattern Matching - 💛 Gelber Gürtel: Funktionen, source, Parameter - 🤍 Weisser Gürtel: Background jobs, Prozesse, Parallelität 📝 Interaktives Quiz-System: - Browser-based Gürtelprüfung (crumbblocks) - 30 Fragen (5 pro Gürtel) - Farbcodiert nach Gürtel - Auto-Export via Clipboard - Terminal-Auswertung mit Zertifikaten 🎓 Zertifikate-System: - Automatische Generierung bei 80%+ - Gespeichert in logs/zertifikate/ - BashPanda's Segen & Weisheiten 📚 Dokumentation: - CLAUDE.md komplett aktualisiert - BashPanda als 18. Waldwächter dokumentiert - Vollständige Dojo-Architektur beschrieben "Der Weg des Codes ist wie der Weg der Kampfkunst: Geduld, Präzision, Wiederholung." - BashPanda 🐼🎋 Crumbforest wächst! 🌲 Der Wurzelbau geht weiter! 🌳 🤖 Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
221 lines
7.2 KiB
Bash
Executable File
221 lines
7.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 🐼 BashPanda Dojo - Grüner Gürtel 💚
|
|
# Lehrt: grep, regex, Pattern Matching
|
|
# Schwierigkeit: Fortgeschritten
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "${SCRIPT_DIR}/../../lib/waldwaechter.sh"
|
|
|
|
cat << 'EOF'
|
|
|
|
╔═══════════════════════════════════════════════════════════╗
|
|
║ ║
|
|
║ 🐼 BASHPANDA DOJO - GRÜNER GÜRTEL 💚 ║
|
|
║ ║
|
|
║ "Muster erkennen ist der Weg zur Weisheit" ║
|
|
║ ║
|
|
╚═══════════════════════════════════════════════════════════╝
|
|
|
|
EOF
|
|
|
|
echo "🐼 BashPanda nickt anerkennend. Du bist weit gekommen."
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
Der Grüne Gürtel lehrt dich MUSTERERKENNUNG.
|
|
|
|
Du wirst lernen:
|
|
🎯 grep - Suchen in Dateien
|
|
🎯 Regular Expressions (Regex) - Die Sprache der Muster
|
|
🎯 grep -E - Extended Regex
|
|
🎯 Praktische Anwendungen: Email, Datum, IP-Adressen
|
|
|
|
"Ein Meister sieht nicht nur was da ist, sondern erkennt das Muster."
|
|
|
|
EOF
|
|
|
|
read -p "➡️ Bereit für Mustererkennung? (j/n): " start
|
|
[[ ! "$start" =~ ^[jJyY]$ ]] && echo "🐼 Das Muster wartet." && exit 0
|
|
echo ""
|
|
|
|
# === PHASE 1: grep Basics ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
📚 PHASE 1: grep - Die Suche beginnt
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
grep durchsucht Text nach Mustern. Wie ein Adler, der Beute
|
|
aus der Ferne erkennt.
|
|
|
|
EOF
|
|
|
|
echo "🐼 Demo: Testdatei erstellen"
|
|
cat > /tmp/waldwaechter.txt << 'DEMO'
|
|
Maya-Eule ist weise
|
|
FunkFox rappt im Beat
|
|
DumboSQL vergisst nie
|
|
BashPanda lehrt Geduld
|
|
Schnippsi stylt alles
|
|
DEMO
|
|
|
|
echo ""
|
|
echo "Inhalt von waldwaechter.txt:"
|
|
cat /tmp/waldwaechter.txt
|
|
echo ""
|
|
|
|
echo "🥋 grep 'Fox' /tmp/waldwaechter.txt"
|
|
grep 'Fox' /tmp/waldwaechter.txt
|
|
echo ""
|
|
|
|
echo "🥋 grep -i 'bash' /tmp/waldwaechter.txt (case-insensitive)"
|
|
grep -i 'bash' /tmp/waldwaechter.txt
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
💡 grep Optionen:
|
|
grep 'muster' datei Suche nach Muster
|
|
grep -i 'muster' datei Ignore case
|
|
grep -n 'muster' datei Zeige Zeilennummern
|
|
grep -v 'muster' datei Invertiere (alles außer Muster)
|
|
grep -c 'muster' datei Zähle Treffer
|
|
grep -r 'muster' ordner/ Rekursiv in allen Dateien
|
|
|
|
EOF
|
|
|
|
# === PHASE 2: Regular Expressions ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
📚 PHASE 2: Regex - Die Sprache der Muster
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
Regex ist wie die Geheimsprache der Textsuche.
|
|
|
|
EOF
|
|
|
|
echo "🐼 Regex Zeichen:"
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
^ Zeilenanfang
|
|
$ Zeilenende
|
|
. Ein beliebiges Zeichen
|
|
* 0 oder mehr Wiederholungen
|
|
+ 1 oder mehr Wiederholungen
|
|
? 0 oder 1 Wiederholung
|
|
[abc] Eines der Zeichen a, b, c
|
|
[0-9] Eine Ziffer
|
|
[a-z] Ein Kleinbuchstabe
|
|
|
|
EOF
|
|
|
|
echo "🥋 Beispiele:"
|
|
echo ""
|
|
|
|
echo "grep '^B' - Zeilen die mit B beginnen:"
|
|
grep '^B' /tmp/waldwaechter.txt
|
|
echo ""
|
|
|
|
echo "grep 't$' - Zeilen die mit t enden:"
|
|
grep 't$' /tmp/waldwaechter.txt
|
|
echo ""
|
|
|
|
# === PHASE 3: Email & Datum Erkennung ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
📚 PHASE 3: Praktische Muster - Email & Datum
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
EOF
|
|
|
|
echo "🐼 Email-Muster erkennen:"
|
|
echo ""
|
|
|
|
cat > /tmp/emails.txt << 'DEMO'
|
|
max@beispiel.de
|
|
test@web.com
|
|
invalid@
|
|
not_an_email
|
|
foo.bar@domain.co.uk
|
|
DEMO
|
|
|
|
echo "Emails in Datei:"
|
|
cat /tmp/emails.txt
|
|
echo ""
|
|
|
|
echo "grep -E für Extended Regex:"
|
|
echo "Email-Pattern: ^[a-zA-Z]+@[a-zA-Z]+\.[a-zA-Z]+$"
|
|
echo ""
|
|
|
|
grep -E '^[a-zA-Z.]+@[a-zA-Z]+\.[a-zA-Z.]+$' /tmp/emails.txt
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
💡 Nützliche Patterns:
|
|
Email: ^[a-zA-Z.]+@[a-zA-Z]+\.[a-zA-Z.]+$
|
|
Datum: ^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$
|
|
IP: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
|
|
|
|
EOF
|
|
|
|
# === GÜRTELPRÜFUNG ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
🥋 GÜRTELPRÜFUNG - GRÜNER GÜRTEL 💚
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
Erstelle 'email_finder.sh' das:
|
|
|
|
1. Nimmt einen Dateinamen als Parameter: $1
|
|
2. Sucht mit grep -E nach Email-Adressen
|
|
3. Nutzt Pattern: ^[[:alpha:]]+(\.[[:alpha:]]+)*@[[:alpha:]]+(\.[[:alpha:]]+)+$
|
|
4. Zeigt alle gefundenen Emails an
|
|
5. Bonus: Zählt sie mit wc -l
|
|
|
|
Test-Datei erstellen:
|
|
cat > emails_test.txt << 'END'
|
|
maya@crumb.forest
|
|
funkfox@beat.music
|
|
invalid@
|
|
test@
|
|
dumbo@memory.database
|
|
END
|
|
|
|
./email_finder.sh emails_test.txt
|
|
|
|
EOF
|
|
|
|
read -p "Prüfung bestanden? (j/n): " pruefung
|
|
|
|
if [[ "$pruefung" =~ ^[jJyY]$ ]]; then
|
|
cat << 'EOF'
|
|
╔═══════════════════════════════════════════════════════════╗
|
|
║ 🎉 AUSGEZEICHNET! 🎉 ║
|
|
║ Du hast den GRÜNEN GÜRTEL 💚 verdient! ║
|
|
║ ║
|
|
║ "Wer Muster erkennt, erkennt die Ordnung im Chaos." ║
|
|
║ ║
|
|
║ - BashPanda 🐼 ║
|
|
╚═══════════════════════════════════════════════════════════╝
|
|
|
|
EOF
|
|
echo "🥋 Gelernt:"
|
|
echo " ✅ grep für Textsuche"
|
|
echo " ✅ Regular Expressions"
|
|
echo " ✅ Email/Datum Pattern"
|
|
echo " ✅ grep -E Extended Regex"
|
|
echo ""
|
|
echo "🎯 Nächster Gürtel: GELB 💛 (Prozesse & Funktionen)"
|
|
else
|
|
echo "🐼 'Muster brauchen Zeit zum Erkennen.'"
|
|
fi
|
|
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "💬 bashpanda \"Wie funktioniert grep mit regex?\""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|