Unix-Shell (Terminal): Definition, Befehle & gängige Shells (bash, zsh)

Unix-Shell erklärt: Definition, zentrale Befehle (ls, cp, man) und gängige Shells wie bash & zsh – schnell verstehen, bedienen und produktiv im Terminal arbeiten.

Autor: Leandro Alegsa

Eine Unix-Shell, oft auch Terminal, Konsole oder Kommandozeile genannt, ist ein Programm, das Befehle entgegennimmt und ausführt. Die Shell bietet eine textbasierte Schnittstelle zur Steuerung des Systems: Sie startet Programme, verwaltet Dateien, steuert Prozesse und kann als mächtiges Skriptwerkzeug dienen. Wichtig ist die Unterscheidung zwischen Shell und Terminalemulator: Das Terminal (z. B. gnome-terminal, xterm) ist das Fenster, in dem die Shell läuft; die Shell selbst ist die Software, die die Eingaben interpretiert.

  • ls — Dateien und Verzeichnisse auflisten
  • cp — Dateien kopieren
  • man — Handbuchseiten anzeigen, um mehr Informationen über Befehle zu erhalten

Eingaben müssen nicht zwingend über die Tastatur erfolgen: Sie können auch aus Dateien, Skripten oder anderen Programmen kommen. In Unix werden die Standard-Ein- und -Ausgabekanäle als stdin (Standard Input), stdout (Standard Output) und stderr (Standard Error) bezeichnet. Durch Pipes (|) und Umleitungen (>, >>, <, 2>) lassen sich Programme miteinander verbinden und Ausgaben umleiten.

Grundkonzepte und nützliche Konzepte

  • PATH: Die Umgebungsvariable PATH enthält Verzeichnisse, in denen die Shell nach ausführbaren Programmen sucht.
  • Ausführbare Dateien und Berechtigungen: Damit eine Datei als Programm gestartet werden kann, braucht sie das Ausführbarkeitsbit (z. B. chmod +x datei).
  • Shebang: Die erste Zeile eines Skripts kann z. B. #!/bin/sh oder #!/usr/bin/env python3 sein — sie legt fest, mit welchem Interpreter das Skript ausgeführt wird.
  • Variablen, Aliase und Funktionen: Shells unterstützen Umgebungs- und lokale Variablen, Benutzer-Aliases (alias ll='ls -la') und Funktionen zur Wiederverwendung von Befehlsfolgen.
  • Globbing und Quoting: Platzhalter wie *, ? und eckige Klammern erleichtern Dateiauswahl; Anführungszeichen steuern, ob Zeichen (z. B. Leerzeichen) und Variablen expanded werden.
  • Job- und Prozesssteuerung: Hintergrundprozesse mit &, Kontrolle mit fg, bg und Anzeige mit jobs.

Einfaches Beispiel — CPU-Typ ermitteln

Ein einfacher Befehl, der auf den meisten Linux/Unix-Systemen funktioniert, ist uname -m (liefert Architektur wie x86_64 oder aarch64). Weitere Informationen liefert z. B. cat /proc/cpuinfo unter Linux. Ein mögliches Zusammenspiel von Befehlen:

$ uname -m x86_64  $ cat /proc/cpuinfo | grep -m1 "model name" model name	: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz

Shell-Skripte

Shell-Skripte sind Textdateien mit aufeinanderfolgenden Shell-Befehlen. Typische Struktur:

#!/bin/sh # kurzes Beispielskript echo "Hallo Welt" ls -la "$1"

Das Skript mit chmod +x skript.sh ausführbar machen und mit ./skript.sh /pfad ausführen. Für komplexere Aufgaben verwendet man Bedingungen (if), Schleifen (for, while) und Funktionen.

Häufige Shells

  • sh — traditionelle Bourne-Shell, oft als POSIX-kompatible Basis.
  • bash — Bourne Again SHell; weit verbreitet, viele Erweiterungen und interaktive Features (Command History, Tab-Completion).
  • zsh — sehr anpassbar, moderne Features, beliebte Wahl für Power-User (z. B. mit Frameworks wie Oh My Zsh).
  • csh/tcsh — C-Shell und deren verbesserte Version tcsh, andere Syntax, historisch bedeutsam.
  • ksh — KornShell, leistungsfähig für Skripte.
  • dash — schlanke, schnelle POSIX-kompatible Shell, oft als /bin/sh auf Debian-basierten Systemen für Startskripte verwendet.
  • fish — benutzerfreundlich mit moderner interaktiver Oberfläche und intelligenter Autovervollständigung.

Personalisierung und Konfigurationsdateien

Beim Start lesen interaktive Login- und Nicht-Login-Shells üblicherweise verschiedene Konfigurationsdateien:

  • ~/.bashrc, ~/.bash_profile oder ~/.profile für bash
  • ~/.zshrc für zsh
  • ~/.cshrc für csh

Dort definiert man Aliase, Umgebungsvariablen (z. B. export PATH=$HOME/bin:$PATH), Prompt-Format (PS1) oder lädt Plugins.

Hilfreiche Befehle und Tipps

  • man befehl oder befehl --help — Dokumentation lesen.
  • history — zuvor eingegebene Befehle anzeigen; mit !123 wiederholen.
  • tab-Taste — Autovervollständigung von Dateinamen/Programmen.
  • pipe (|) — Ausgabe eines Befehls an den nächsten weiterreichen: ps aux | grep nginx.
  • Umleitungen: ls > dateiliste.txt, echo "Fehler" 1>> log.txt, command >/dev/null 2>&1.
  • Sicherheit: Vorsicht mit sudo und als Root ausgeführten Befehlen; prüfen, was Skripte tun, bevor man sie ausführt.

Wann welche Shell wählen?

Für die tägliche Arbeit ist bash weit verbreitet und gut dokumentiert. Wer eine modernere, stark anpassbare Umgebung will, wählt oft zsh (mit Oh My Zsh). Für POSIX-kompatible Skripte ist sh bzw. eine POSIX-Shell sinnvoll, da Skripte so portabler zwischen Unix-Systemen bleiben. fish eignet sich, wenn interaktive Benutzerfreundlichkeit wichtiger ist als POSIX-Kompatibilität.

Zusammengefasst: Die Unix-Shell ist ein zentrales Werkzeug für Systemadministration, Programmstart, Textverarbeitung und Automatisierung. Wer grundlegende Konzepte wie Pipes, Umleitungen, Pfade, Berechtigungen und einfache Skripte beherrscht, kann sehr effizient mit Unix-ähnlichen Systemen arbeiten.

Eine Unix-Shell, in diesem Fall eine Linux-Shell (zum Vergrößern anklicken)Zoom
Eine Unix-Shell, in diesem Fall eine Linux-Shell (zum Vergrößern anklicken)



Suche in der Enzyklopädie
AlegsaOnline.com - 2020 / 2025 - License CC3