Bash: 10 typische Lösungen für Aufgaben im Skript-Alltag

Zehn bewährte Bash-Muster für den Alltag: Checks, Prompts, Redirects, Prozesse, Parsing und Output, jeweils mit Mini-Beispiel und Link zum passenden Deep Dive

Dieser Artikel hat eine Lesedauer von 2 minutes Minuten.

Bash: 10 typische Lösungen für Aufgaben im Skript-Alltag

Bash wirkt oft chaotisch, bis man ein paar robuste Standardmuster hat. Hier sind zehn typische Aufgaben und die Lösungen, die in echten Skripten sauber funktionieren, inklusive Links zu den passenden Deep Dives.

1. Prüfen, ob ein Ordner existiert und ihn bei Bedarf anlegen

Wenn ein Skript Dateien schreibt, ist der Zielordner oft die erste Fehlerquelle. -d prüft Verzeichnisse, mkdir -p macht es praktisch.

DIR="/tmp/example"
[[ -d "$DIR" ]] || mkdir -p "$DIR"

Zum vollständigen Artikel geht es hier

2. Prüfen, ob ein Programm verfügbar ist

Abhängigkeiten früh zu checken spart Debugging. command -v ist dafür das Standardmuster.

require_cmd() {
  command -v "$1" >/dev/null 2>&1 || {
    echo "Fehlt: $1" >&2
    exit 1
  }
}

require_cmd git
require_cmd curl

Zum vollständigen Artikel geht es hier

3. stdout und stderr sauber umleiten

Wenn du Output unterdrücken oder in Logs sammeln willst, ist 2>&1 zentral. Erst stdout umleiten, dann stderr “dazuhängen”.

mycmd >/dev/null 2>&1

Zum vollständigen Artikel geht es hier

4. Einen Teilstring im String finden

Für schnelle Checks ist Pattern-Matching in [[ ... ]] meistens ausreichend und gut lesbar.

text="Hallo Oliver"
needle="Oliver"

if [[ "$text" == *"$needle"* ]]; then
  echo "Treffer"
fi

Zum vollständigen Artikel geht es hier

5. Dateiname und Endung trennen

Mit Parameter Expansion kommst du ohne externe Tools aus. Wichtig sind Sonderfälle wie mehrere Punkte oder keine Endung.

file="report.final.pdf"
base="${file%.*}"
ext="${file##*.}"
echo "base=$base ext=$ext"

Zum vollständigen Artikel geht es hier

6. Ein Skript aus einem anderen aufrufen, ohne dass Pfade brechen

Relative Pfade sind die typische Fehlerquelle. Hol dir zuerst das Skriptverzeichnis und rufe von dort aus auf.

SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
"$SCRIPT_DIR/other.sh" "$@"

Zum vollständigen Artikel geht es hier

7. Interaktiver Prompt: Ja, Nein oder Abbrechen

Für Skripte, die bewusst interaktiv sind, ist read plus case der saubere Standard.

while true; do
  read -r -p "Fortfahren? [y/n/c]: " a
  case "$a" in
    [Yy]) break ;;
    [Nn]) exit 0 ;;
    [Cc]) exit 130 ;;
    *) echo "Bitte y, n oder c." ;;
  esac
done

Zum vollständigen Artikel geht es hier

8. CPU Kerne und Threads ausgeben

Für Parallelisierung ist meist die logische Zahl relevant. Auf macOS ist sysctl der Standard, auf Linux nproc, und getconf ist ein guter Fallback.

threads="$(getconf _NPROCESSORS_ONLN 2>/dev/null)"
echo "Logische Kerne: $threads"

Zum vollständigen Artikel geht es hier

9. Prozesse per Regex finden und kontrolliert beenden

Erst anzeigen, dann beenden. Mit pgrep -af bekommst du eine Vorschau, pkill -TERM -f beendet kontrolliert.

pattern="my-worker\.sh"
pgrep -af "$pattern"
pkill -TERM -f "$pattern"

Zum vollständigen Artikel geht es hier

10. Output lesbarer machen: Farben für Statusmeldungen

Farben helfen, wenn du sie sparsam einsetzt und immer resettest. printf ist dabei stabiler als echo -e.

GREEN="\033[32m"
RED="\033[31m"
RESET="\033[0m"

printf "${GREEN}OK${RESET} %s\n" "Alles bereit"
printf "${RED}ERR${RESET} %s\n" "Fehler beim Download" >&2

Zum vollständigen Artikel geht es hier

Ein Einstieg, der diese Muster zusammenhält

Wenn du Bash neu lernst, ist es oft hilfreicher, diese Muster zu verstehen, als Features auswendig zu lernen. Sobald du Checks, Redirects, String-Handling und Prozesskontrolle sauber beherrschst, wirken viele Skripte plötzlich überraschend “geradlinig”.

Einstieg und Grundprinzipien:
Bash-Tutorial für Anfänger an.

Eine Idee im Kopf?


Dann kontaktier mich doch


Wenn du Social-Media-Unterstützung brauchst oder ein Thema journalistisch sauber aufbereiten willst, melde dich.