đŒ BashPanda v2 Lösungsbuch (Dojo Cheat-Sheet)
Dieses Dokument enthĂ€lt alle Fragen, die korrekten Antworten und eine kurze verstĂ€ndliche ErklĂ€rung fĂŒr jede GĂŒrtelprĂŒfung im BashPanda Dojo.
đ€ Schwarzer GĂŒrtel (Der Anfang / Basis)
1. Was gibt 'echo $HOME' aus?
- Optionen:
- A: Dein Home-Verzeichnis
- B: Die Umgebungsvariable HOME
- C: Beide Antworten sind richtig (KORREKT)
- D: Einen Fehler
- ErklÀrung:
$HOMEwertet die UmgebungsvariableHOMEaus und gibt den Pfad deines Home-Verzeichnisses (z. B./Users/bmtoder/home/visitor) aus. Da dieser Pfad sowohl dein Home-Verzeichnis darstellt als auch der Wert der Variable ist, sind beide Antworten semantisch korrekt.
2. Wie erstellt man eine Variable?
- Optionen:
- A:
name = value - B:
name=value(KORREKT) - C:
$name=value - D:
set name=value - ErklĂ€rung: In Bash dĂŒrfen um das Zuweisungszeichen
=keine Leerzeichen stehen. Andernfalls interpretiert die Shell das erste Wort als Befehl. AuĂerdem wird das$-Zeichen nur beim Auslesen einer Variable verwendet, nicht bei der Zuweisung.
3. Was macht 'read -p "Name: " name'?
- Optionen:
- A: Liest eine Datei
- B: Zeigt 'Name:' und speichert Eingabe in $name (KORREKT)
- C: Gibt $name aus
- D: Nichts
- ErklÀrung: Der Befehl
readliest Benutzereingaben von der Tastatur ein. Das Flag-p(Prompt) zeigt dem Benutzer vorab einen Hinweistext (hier"Name: ") an. Das letzte Argumentnamedefiniert den Variablennamen, unter dem die Eingabe gespeichert wird.
4. Welcher ANSI Code macht Text fett?
- Optionen:
- A:
\e[0m - B:
\e[1m(KORREKT) - C:
\e[4m - D:
\e[32m - ErklÀrung: ANSI-Escapesequenzen steuern die Formatierung im Terminal.
\e[1m(oder\033[1m) aktiviert den Fettdruck (Bold).\e[0msetzt alle Formatierungen zurĂŒck,\e[4munterstreicht Text, und\e[32mfĂ€rbt den Text grĂŒn.
5. Was ist der Unterschied zwischen ' und " in echo?
- Optionen:
- A: Keiner
- B: ' ignoriert Variablen, " ersetzt sie (KORREKT)
- C:
" ignoriert Variablen - D: Beide ersetzen Variablen
- ErklĂ€rung: Einfache AnfĂŒhrungszeichen
' '(Strong Quotes) schĂŒtzen den Text vollstĂ€ndig, sodass Variablen nicht ausgewertet werden (z. B. wird$varals Text gedruckt). Doppelte AnfĂŒhrungszeichen" "(Weak Quotes) erlauben die Variablenersetzung (Interpolation), sodass der Inhalt der Variable ausgegeben wird.
đ Pinker GĂŒrtel (Logik & Arrays)
1. Was prĂŒft [ $a -eq $b ]?
- Optionen:
- A: String-Gleichheit
- B: Zahlen-Gleichheit (KORREKT)
- C: GröĂer als
- D: Kleiner als
- ErklÀrung: Der Operator
-eq(equal) wird in Bash ausschlieĂlich fĂŒr den numerischen Vergleich (Zahlen-Gleichheit) verwendet. FĂŒr Strings nutzt man stattdessen=oder==.
2. Wie greift man auf das 3. Array-Element zu?
- Optionen:
- A:
${arr[3]} - B:
${arr[2]}(KORREKT) - C:
$arr[2] - D:
arr[3] - ErklĂ€rung: Arrays in Bash sind 0-indiziert, das heiĂt, das erste Element hat den Index
0, das zweite1und das dritte2. Zudem ist die Syntax${array_name[index]}zwingend erforderlich, um auf einzelne Elemente zuzugreifen.
3. Was macht 'while [ $i -le 5 ]; do ... done'?
- Optionen:
- A: LĂ€uft 4 mal
- B: LĂ€uft 5 mal (KORREKT im Quiz)
- C: LĂ€uft 6 mal
- D: Endlosschleife
- ErklÀrung: Im Quiz wird davon ausgegangen, dass der ZÀhler bei
1beginnt und bis5hochzĂ€hlt, weshalb B (âLĂ€uft 5 malâ) die gesuchte Antwort ist. (Hinweis: WĂŒrde die Variable beii=0starten, liefe die Schleife tatsĂ€chlich 6-mal).
4. Wie zÀhlt man Arrays hoch? (Eigentlich Schleifen-ZÀhler)
- Optionen:
- A:
i++ - B:
i=$((i + 1))(KORREKT in der Online-Version) - C:
let i++ - D: Alle sind richtig (KORREKT in der lokalen Datei)
- ErklÀrung: Hier gibt es einen Unterschied zwischen der Online-Seite und der lokalen Datei:
- Online (branko.de): Erwartet B (
i=$((i + 1))). - Lokal (panda_guertel.html): Erwartet D (
Alle sind richtig). - Hinweis zur Praxis:
i=$((i + 1))undlet i++sind in Bash die Standardwege.i++allein funktioniert nur innerhalb von((...)).
5. Was gibt ${#arr[@]} zurĂŒck?
- Optionen:
- A: Erstes Element
- B: Letztes Element
- C: Anzahl Elemente (KORREKT)
- D: Fehler
- ErklÀrung: In der Bash-Array-Syntax steht
@fĂŒr alle Elemente. Das vorangestellte#-Zeichen (${#...}) zĂ€hlt die Elemente. Somit liefert${#arr[@]}die Gesamtzahl der Elemente im Array zurĂŒck.
đ Blauer GĂŒrtel (Rechnen & Sed)
1. Was macht 'sed s/alt/neu/'?
- Optionen:
- A: Löscht 'alt'
- B: Ersetzt erstes 'alt' mit 'neu' (KORREKT)
- C: Ersetzt alle 'alt' mit 'neu'
- D: Sucht nach 'alt'
- ErklÀrung: Der Stream-Editor
sedverwendet den Befehls(substitute) fĂŒr Ersetzungen. Ohne den globalen Flag/gam Ende (sed 's/alt/neu/g') wird standardmĂ€Ăig nur das erste Vorkommen pro Zeile ersetzt.
2. WofĂŒr nutzt man 'case' statt if/then?
- Optionen:
- A: FĂŒr Schleifen
- B: FĂŒr mehrere if-Alternativen (KORREKT)
- C: FĂŒr Arrays
- D: FĂŒr Funktionen
- ErklÀrung: Eine
case-Struktur dient dazu, eine Variable mit verschiedenen Mustern abzugleichen. Sie ist oft ĂŒbersichtlicher und schneller zu schreiben als lange Ketten ausif ... elif ... else.
3. Wie rechnet man mit FlieĂkommazahlen?
- Optionen:
- A:
$(( )) - B: bc (KORREKT)
- C:
let - D:
expr - ErklÀrung: Die eingebaute Bash-Arithmetik (
$(( )),let,expr) kann nur mit Ganzzahlen (Integern) rechnen. FĂŒr FlieĂkommazahlen (Dezimalzahlen) muss ein externes Tool wiebc(Basic Calculator) verwendet werden.
4. Was bedeutet das * in case?
- Optionen:
- A: Multiplikation
- B: Wildcard (alles)
- C: Default-Fall (KORREKT)
- D: Fehler
- ErklÀrung: In einer
case-Anweisung steht das Muster*am Ende fĂŒr alle Werte, die nicht durch vorherige Muster abgedeckt wurden. Es verhĂ€lt sich wie dasdefaultin Switch-Statements anderer Programmiersprachen.
5. Wie nutzt man bc fĂŒr Division?
- Optionen:
- A:
bc 10/3 - B: echo '10/3' | bc (KORREKT)
- C:
10/3 | bc - D:
bc(10/3) - ErklÀrung:
bcliest Berechnungen standardmĂ€Ăig aus der Standard-Eingabe (Stdin). Daher ĂŒbergibt man den mathematischen Ausdruck per Pipe (echo '10/3' | bc).
đ GrĂŒner GĂŒrtel (Grep & Regex)
1. Was macht grep -i?
- Optionen:
- A: Zeigt Zeilennummern
- B: Ignoriert GroĂ-/Kleinschreibung (KORREKT)
- C: Invertiert Suche
- D: Rekursiv suchen
- ErklÀrung: Das Flag
-isteht fĂŒr ignore-case. Es sorgt dafĂŒr, dass bei der Mustersuche nicht zwischen GroĂ- und Kleinschreibung unterschieden wird.
2. Was bedeutet ^ in Regex?
- Optionen:
- A: Zeilenanfang (KORREKT)
- B: Zeilenende
- C: Beliebiges Zeichen
- D: Wiederholung
- ErklĂ€rung: In regulĂ€ren AusdrĂŒcken ist das Zirkumflex
^ein Anker, der festlegt, dass das nachfolgende Muster direkt am Anfang einer Zeile beginnen muss. (Das Zeilenende wird durch$markiert).
3. Was matched [0-9]+ in Regex?
- Optionen:
- A: Genau eine Ziffer
- B: Eine oder mehr Ziffern (KORREKT)
- C: Null oder mehr Ziffern
- D: Keine Ziffer
- ErklÀrung: Die eckigen Klammern
[0-9]matchen eine beliebige Ziffer. Das Pluszeichen+ist ein Quantifizierer und steht fĂŒr âeinmal oder mehrmalsâ.
4. Wie sucht man rekursiv in allen Dateien?
- Optionen:
- A:
grep muster * - B: grep -r muster . (KORREKT)
- C:
grep -i muster - D:
grep -n muster - ErklÀrung: Das Flag
-r(oder-R) steht fĂŒr recursive. Es veranlasstgrep, alle Dateien im angegebenen Verzeichnis (hier.fĂŒr das aktuelle Verzeichnis) und allen Unterverzeichnissen zu durchsuchen.
5. Was matched .* in Regex?
- Optionen:
- A: Nichts
- B: Punkt und Stern
- C: Beliebige Zeichen (0+) (KORREKT)
- D: Ein Zeichen
- ErklÀrung: Der Punkt
.steht in regulĂ€ren AusdrĂŒcken fĂŒr ein beliebiges einzelnes Zeichen (auĂer Zeilenumbruch). Der Stern*bedeutet ânull oder mehrmalsâ. Zusammen steht.*fĂŒr eine beliebige Folge von Zeichen beliebiger LĂ€nge.
đ Gelber GĂŒrtel (Funktionen)
1. Wie definiert man eine Funktion?
- Optionen:
- A:
func name() {} - B:
function name() {} - C:
def name() {} - D: Beide 1 und 2 (KORREKT im Quiz / function name() {} & name() {} in Bash)
- ErklĂ€rung: In Standard-Bash definiert man Funktionen entweder ĂŒber
function name { ... }oder kompakter ĂŒbername() { ... }. Das SchlĂŒsselwortfuncexistiert in Bash eigentlich nicht (wohl aber in Go oder Kotlin). Im Quiz gilt jedoch D als Antwort.
2. Was ist $1 in einer Funktion?
- Optionen:
- A: Erster Buchstabe
- B: Erster Parameter (KORREKT)
- C: Exit-Code
- D: PID
- ErklĂ€rung: Funktionen in Bash erhalten Argumente wie eigenstĂ€ndige Skripte ĂŒber positionelle Parameter.
$1greift auf das erste Argument zu, das der Funktion beim Aufruf ĂŒbergeben wurde.
3. Was macht 'source datei.sh'?
- Optionen:
- A: FĂŒhrt Datei aus
- B: LĂ€dt Funktionen in aktuelle Shell (KORREKT)
- C: Kopiert Datei
- D: Löscht Datei
- ErklÀrung:
source(oder auch der Punkt-Befehl.) fĂŒhrt ein Skript im aktuellen Prozess der Shell aus. Dadurch bleiben dort definierte Variablen und Funktionen in der aktuellen Sitzung erhalten, statt in einer Sub-Shell zu verpuffen.
4. Was macht 'return 42' in einer Funktion?
- Optionen:
- A: Gibt 42 aus
- B: Beendet Skript
- C: VerlÀsst Funktion mit Code 42 (KORREKT)
- D: Fehler
- ErklÀrung: In Bash-Funktionen gibt
returnkeinen Text oder Wert zurĂŒck, sondern einen numerischen Statuscode (Exit-Status, 0 bis 255). Ein Wert von0bedeutet Erfolg, ungleich0(z. B.42) signalisiert einen Fehler oder einen benutzerdefinierten Status.
5. Was ist $@ in einer Funktion?
- Optionen:
- A: Erster Parameter
- B: Alle Parameter (KORREKT)
- C: Anzahl Parameter
- D: Funktionsname
- ErklÀrung: Die spezielle Variable
$@expandiert zu allen Parametern, die an die Funktion oder das Skript ĂŒbergeben wurden (einzeln in AnfĂŒhrungszeichen eingeschlossen).
đ€ WeiĂer GĂŒrtel (Die Leere / Prozesse)
1. Was macht & am Ende eines Befehls?
- Optionen:
- A: Beendet ihn
- B: Startet im Hintergrund (KORREKT)
- C: Wiederholt ihn
- D: Nichts
- ErklÀrung: HÀngt man ein kaufmÀnnisches Und-Zeichen
&an einen Befehl an, startet die Shell diesen Befehl asynchron im Hintergrund und gibt das Terminal sofort wieder fĂŒr neue Eingaben frei.
2. Was ist $! ?
- Optionen:
- A: Exit-Code
- B: PID des letzten Background-Jobs (KORREKT)
- C: Anzahl Parameter
- D: Home-Verzeichnis
- ErklÀrung: Die Spezialvariable
$!enthÀlt die Prozess-ID (PID) des Befehls, der als Letztes im Hintergrund (mit&) gestartet wurde.
3. Was macht 'wait'?
- Optionen:
- A: Wartet 1 Sekunde
- B: Wartet auf Eingabe
- C: Wartet auf Background-Jobs (KORREKT)
- D: Pausiert Skript
- ErklÀrung: Der eingebaute Befehl
waitblockiert die AusfĂŒhrung des aktuellen Skripts so lange, bis alle im Hintergrund laufenden Jobs (oder ein bestimmter Job ĂŒber seine PID) vollstĂ€ndig beendet sind.
4. Wie zeigt man alle Background-Jobs?
- Optionen:
- A:
ps - B: jobs (KORREKT)
- C:
bg - D:
fg - ErklÀrung: Der Befehl
jobslistet alle aktiven, pausierten oder im Hintergrund laufenden Prozesse auf, die von der aktuellen Shell-Sitzung gestartet wurden.
5. Was macht 'fg %1'?
- Optionen:
- A: Beendet Job 1
- B: Bringt Job 1 in Vordergrund (KORREKT)
- C: Startet Job 1
- D: Pausiert Job 1
- ErklÀrung:
fgsteht fĂŒr foreground. Mitfg %1holst du den Job mit der Jobnummer 1 aus dem Hintergrund zurĂŒck in den interaktiven Vordergrund deines Terminals.