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>
209 lines
7.2 KiB
Bash
Executable File
209 lines
7.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 🐼 BashPanda Dojo - Blauer Gürtel 💙
|
|
# Lehrt: sed, case, bc, Textverarbeitung
|
|
# Schwierigkeit: Fortgeschritten
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "${SCRIPT_DIR}/../../lib/waldwaechter.sh"
|
|
|
|
cat << 'EOF'
|
|
|
|
╔═══════════════════════════════════════════════════════════╗
|
|
║ ║
|
|
║ 🐼 BASHPANDA DOJO - BLAUER GÜRTEL 💙 ║
|
|
║ ║
|
|
║ "Text ist wie Wasser - formbar, fließend, kraftvoll" ║
|
|
║ ║
|
|
╚═══════════════════════════════════════════════════════════╝
|
|
|
|
EOF
|
|
|
|
echo "🐼 Der Meister begrüßt einen fortgeschrittenen Schüler..."
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
Der Blaue Gürtel lehrt dich TEXTVERARBEITUNG.
|
|
|
|
Du wirst lernen:
|
|
🎯 sed - Stream Editor für Textmanipulation
|
|
🎯 case - Mehrfach-Entscheidungen
|
|
🎯 bc - Rechnen mit Fließkommazahlen
|
|
🎯 wc - Wörter und Zeilen zählen
|
|
|
|
"Text ist die Sprache des Terminals. Beherrsche sie."
|
|
|
|
EOF
|
|
|
|
read -p "➡️ Bereit für Text-Meisterschaft? (j/n): " start
|
|
[[ ! "$start" =~ ^[jJyY]$ ]] && echo "🐼 Bis zum nächsten Mal." && exit 0
|
|
echo ""
|
|
|
|
# === PHASE 1: sed - Der Text-Transformator ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
📚 PHASE 1: sed - Stream Editor
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
sed ist wie ein Pinsel für Text: Du streichst alte Worte weg
|
|
und schreibst neue.
|
|
|
|
EOF
|
|
|
|
echo "🐼 Demo: Text ersetzen"
|
|
echo ""
|
|
echo "Original: Das ist ein Test" | tee /tmp/bashpanda_test.txt
|
|
echo ""
|
|
echo "sed 's/Test/Beispiel/':"
|
|
sed 's/Test/Beispiel/' /tmp/bashpanda_test.txt
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
💡 sed Basics:
|
|
sed 's/alt/neu/' Ersetze erstes Vorkommen
|
|
sed 's/alt/neu/g' Ersetze alle Vorkommen
|
|
sed '2d' Lösche Zeile 2
|
|
sed '3iNEUER TEXT' Füge Text vor Zeile 3 ein
|
|
|
|
EOF
|
|
|
|
echo "🥋 Kata: Erstelle 'texteditor.sh' das:"
|
|
echo " - Eine Datei lädt"
|
|
echo " - Fragt: einfügen (e) oder löschen (l)?"
|
|
echo " - Mit sed die Operation durchführt"
|
|
echo ""
|
|
read -p "Weiter? (j/n): " p1
|
|
[[ ! "$p1" =~ ^[jJyY]$ ]] && exit 0
|
|
echo ""
|
|
|
|
# === PHASE 2: case - Der Mehrfach-Krieger ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
📚 PHASE 2: case - Mehrfach-Entscheidungen
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
Statt vieler if/then/else nutzt case für klare Struktur.
|
|
|
|
EOF
|
|
|
|
echo "🐼 Live Demo:"
|
|
echo ""
|
|
|
|
echo "Wähle einen Gürtel (schwarz/pink/blau/gruen/gelb/weiss):"
|
|
read guertel_input
|
|
|
|
case "$guertel_input" in
|
|
schwarz) echo "🖤 Der Anfang - Basics" ;;
|
|
pink) echo "💖 Kontrolle - Schleifen" ;;
|
|
blau) echo "💙 Text - sed & case" ;;
|
|
gruen) echo "💚 Pattern - grep & regex" ;;
|
|
gelb) echo "💛 Prozesse - Funktionen" ;;
|
|
weiss) echo "🤍 System - Units" ;;
|
|
*) echo "❓ Unbekannter Gürtel" ;;
|
|
esac
|
|
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
💡 case Syntax:
|
|
case "$variable" in
|
|
muster1) befehle ;;
|
|
muster2) befehle ;;
|
|
*) default ;;
|
|
esac
|
|
|
|
EOF
|
|
|
|
# === PHASE 3: bc - Rechnen mit Präzision ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
📚 PHASE 3: bc - Präzises Rechnen
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
$(( )) kann nur ganze Zahlen. Für Fließkommazahlen: bc
|
|
|
|
EOF
|
|
|
|
echo "🐼 Demo: Fass-Rechnung"
|
|
echo ""
|
|
|
|
cat << 'DEMO'
|
|
fuellstand=10.5
|
|
abzapfen=3.2
|
|
neu=$(echo "$fuellstand - $abzapfen" | bc)
|
|
echo "Neu: $neu Liter"
|
|
DEMO
|
|
|
|
echo ""
|
|
fuellstand=10.5
|
|
abzapfen=3.2
|
|
neu=$(echo "$fuellstand - $abzapfen" | bc)
|
|
echo "Resultat: $neu Liter"
|
|
echo ""
|
|
|
|
cat << 'EOF'
|
|
💡 bc Operationen:
|
|
echo "3.5 + 2.1" | bc
|
|
echo "10 / 3" | bc -l (-l für mehr Präzision)
|
|
echo "scale=2; 10/3" | bc
|
|
|
|
EOF
|
|
|
|
# === GÜRTELPRÜFUNG ===
|
|
|
|
cat << 'EOF'
|
|
═══════════════════════════════════════════════════════════
|
|
🥋 GÜRTELPRÜFUNG - BLAUER GÜRTEL 💙
|
|
═══════════════════════════════════════════════════════════
|
|
|
|
Erstelle 'fluessigkeiten.sh' das:
|
|
|
|
1. Fragt: "Wie viele Liter hat das Fass?"
|
|
2. while-Schleife: Solange Füllstand > 0
|
|
3. Fragt: "Wie viel abzapfen?"
|
|
4. Mit bc rechnen: fuellstand - abzapfen
|
|
5. Ausgabe: "Noch X Liter im Fass"
|
|
6. Bonus: case für verschiedene Füllstände
|
|
- < 2.0: "Fast leer!"
|
|
- < 5.0: "Bald nachfüllen"
|
|
- >= 5.0: "Genug Vorrat"
|
|
|
|
EOF
|
|
|
|
echo "💡 Tipp: Vergleich mit bc:"
|
|
echo " if [ \"\$(echo \"\$wert > 5\" | bc)\" == 1 ]; then"
|
|
echo ""
|
|
|
|
read -p "Prüfung bestanden? (j/n): " pruefung
|
|
|
|
if [[ "$pruefung" =~ ^[jJyY]$ ]]; then
|
|
cat << 'EOF'
|
|
╔═══════════════════════════════════════════════════════════╗
|
|
║ 🎉 MEISTERHAFT! 🎉 ║
|
|
║ Du hast den BLAUEN GÜRTEL 💙 verdient! ║
|
|
║ ║
|
|
║ "Text fließt durch deine Finger ║
|
|
║ wie Wasser durch das Bambuswäldchen." ║
|
|
║ ║
|
|
║ - BashPanda 🐼 ║
|
|
╚═══════════════════════════════════════════════════════════╝
|
|
|
|
EOF
|
|
echo "🥋 Gelernt:"
|
|
echo " ✅ sed für Textbearbeitung"
|
|
echo " ✅ case für Multi-Entscheidungen"
|
|
echo " ✅ bc für Fließkomma-Rechnung"
|
|
echo ""
|
|
echo "🎯 Nächster Gürtel: GRÜN 💚 (Pattern Matching: grep, regex)"
|
|
else
|
|
echo "🐼 'Der Text wartet geduldig. Übe weiter.'"
|
|
fi
|
|
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "💬 bashpanda \"Wie nutze ich sed zum Ersetzen?\""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|