154 lines
4.0 KiB
Markdown
154 lines
4.0 KiB
Markdown
# 🐧 Crumbpage 20: Tanz am Kernel (Bashing the Shell)
|
|
|
|
**Subtitle:** *Dein Cockpit, deine Regeln.*
|
|
**Pfad:** 20 von X
|
|
**Schwierigkeit:** ⭐⭐⭐ (3/5)
|
|
**Zeit:** Lebenslang
|
|
**Voraussetzungen:** [Environment](crumbpage-14-environment.md), [Editoren](crumbpage-04-editoren.md)
|
|
|
|
> *"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
|
|
|
|
```bash
|
|
# ~/.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):**
|
|
```bash
|
|
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):**
|
|
```bash
|
|
if [$a = $b]; then ...
|
|
```
|
|
Die Shell sucht nach einem Programm namens `[$a`.
|
|
|
|
**Richtig:**
|
|
```bash
|
|
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.
|
|
|
|
---
|
|
|
|
## 🛠️ Mechanik: Symlinks & /dev/null
|
|
|
|
### Das schwarze Loch (`/dev/null`)
|
|
Alles, was dorthin geht, verschwindet. Perfekt für nervige Fehlermeldungen.
|
|
|
|
```bash
|
|
# Standard Output wegwerfen, Fehler anzeigen
|
|
befehl > /dev/null
|
|
|
|
# Alles wegwerfen (Ruhe im Karton)
|
|
befehl > /dev/null 2>&1
|
|
```
|
|
|
|
### Symlinks bearbeiten
|
|
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.
|
|
|
|
```bash
|
|
# 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.
|
|
|
|
```bash
|
|
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](crumbpage-19-agent-lockdown.md) | [Startseite](crumbpages-doktor.sh)
|