Files
OZM-Keks-Handbuch-v1/crumbpage-20-tanz-am-kernel.md
2025-12-12 19:55:49 +01:00

4.0 KiB

🐧 Crumbpage 20: Tanz am Kernel (Bashing the Shell)

Subtitle: Dein Cockpit, deine Regeln.
Pfad: 20 von X
Schwierigkeit: (3/5)
Zeit: Lebenslang
Voraussetzungen: Environment, Editoren

"Die Shell ist kein Programm. Sie ist eine Lebenseinstellung."


🎨 Spaceship Lackierung (Der Visual-Mod)

Wir haben jetzt ein Raumschiff (Debian 13), aber es sieht noch aus wie ein Karton. Lass uns Farben mischen. In der .bashrc definieren wir unsere Palette.

Die Farb-Masken

# ~/.bashrc - Color Definitions
export RED="\[\033[0;31m\]"
export GREEN="\[\033[0;32m\]"
export YELLOW="\[\033[1;33m\]"
export BLUE="\[\033[0;34m\]"
export PURPLE="\[\033[0;35m\]"
export CYAN="\[\033[0;36m\]"
export NC="\[\033[0m\]" # No Color

Der Prompt (PS1)

Der String PS1 bestimmt, was vor dem Cursor steht. Standard: \u@\h:\w\$ (User@Host:Path$)

Admin-Style (Rot bei Root):

if [ "$EUID" -eq 0 ]; then
  PS1="${RED}\u@\h${NC}:${BLUE}\w${NC}# "
else
  PS1="${GREEN}\u@\h${NC}:${BLUE}\w${NC}$ "
fi

Syntax-Fallen: Warum schreit meine Shell?

Du hast heute gekämpft. Hier sind die Narben und was wir daraus gelernt haben.

1. Das "Eckige Klammern" Trauma

Bash ist extrem pingelig mit Leerzeichen.

Falsch (Error: command not found):

if [$a = $b]; then ...

Die Shell sucht nach einem Programm namens [$a.

Richtig:

if [ "$a" = "$b" ]; then ...

Die Klammer [ ist tatsächlich ein Befehl (Alias für test). Und Befehle brauchen Leerzeichen zu ihren Argumenten.

2. Ampersand Roulette: & vs. &&

Ein kleiner Unterschied, der Prozesse tötet oder Zombies erschafft.

  • befehl1 && befehl2: Mach 2 nur wenn 1 erfolgreich war (AND).
  • befehl1 & befehl2: Starte 1 im Hintergrund und starte sofort 2 (Parallel).

Die Falle: script.sh & && ssh-add -> Syntax Error. Das && erwartet einen Befehl davor, aber das & hat den Befehl schon in den Hintergrund geschickt (Ende der Befehlskette).

Lösung: Klammern oder Semikolon. (script.sh &) && ssh-add (Subshell)

3. EOF und das "Heredoc"

Wenn du Code dynamisch schreibst (cat << EOF), darf kein Leerzeichen nach dem EOF (End Marker) stehen. Sonst wartet Bash für immer auf das "echte" EOF.


Das schwarze Loch (/dev/null)

Alles, was dorthin geht, verschwindet. Perfekt für nervige Fehlermeldungen.

# Standard Output wegwerfen, Fehler anzeigen
befehl > /dev/null

# Alles wegwerfen (Ruhe im Karton)
befehl > /dev/null 2>&1

Ein Symlink (ln -s) ist nur ein Wegweiser. Wenn du ihn bearbeitest (nano linkname), bearbeitest du das Ziel. Wenn du das Ziel löschst, zeigt der Link ins Leere ("Dangling Symlink").


🚀 Funktionen vs. Aliases

Aliases sind gut für Abkürzungen (aliasll='ls -l'). Für Logik brauchst du Funktionen.

Der Reload-Trick

Nach dem Editieren der .bashrc musst du dich nicht ausloggen.

# In ~/.bashrc
function reload() {
    source ~/.bashrc
    echo "♻️  Umgebung neu geladen."
}

Jetzt reicht ein reload.

Der "Killer" (Prozess-Management)

Wie vom User heute gefordert: Eine Funktion, um Hintergrund-Scripte gezielt zu stoppen.

function killscript() {
    PATTERN="$1"
    if [ -z "$PATTERN" ]; then echo "Welches Script?"; return; fi
    
    # pkill -f sucht im vollen Befehlsnamen
    pkill -f "$PATTERN" && echo "💀 $PATTERN wurde beendet." || echo "Nichts gefunden."
}

🦉 Crystal Owl's Weisheit

"Ein guter Admin schreibt keine Befehle, er komponiert sie."

Deine .bashrc wächst mit dir. Was heute nützlich ist, fliegt morgen raus. Das ist okay. Es ist dein Werkzeugkasten. Halte ihn sauber, aber habe keine Angst vor neuen Tools.


Version: 1.0
Status: Ready
Tags: #Bash #Config #KernelDance #Syntax


Navigation:
← Zurück: Agent Lockdown | Startseite