Linux · Tag 1 · Kapitel 06 von 12

Terminal, Shell & Bash verstehen

Drei Begriffe, die ständig durcheinandergeworfen werden — Terminal, Konsole, Shell. Wir trennen sie sauber, lernen warum Bash der Standard wurde und üben die Tastenkürzel, die einen Admin von einem schnellen Admin trennen.

📚 Kapitel 06 ⏱️ ca. 30 min Lesezeit 🎯 Theorie + Praxis
6.1

Wo kommt der Begriff „Terminal“ überhaupt her?

Geschichte

Wir tippen heute auf einem Laptop und nennen das Fenster „Terminal“ — der Name ist aber 80 Jahre alt und hat ursprünglich mit Linux nichts zu tun.

1837 — Telegrafenstationen

Der Begriff stammt aus der Welt der Telegrafen. Ein Telegrafen-Terminal war das Endgerät einer langen Leitung — der Punkt, an dem ein Mensch Nachrichten eintippte und empfing. Das Wort ist lateinisch terminus = „Ende, Grenze“.

1873 — Der Teletype

Aus dem Telegrafen wurde der Teletype (TTY) — ein Gerät, das Buchstaben statt Morsezeichen übertrug. Eine Tastatur tippte, ein Drucker druckte. Diese Geräte waren laut, langsam, gigantisch — und sie waren das erste, was Programmierer als „Eingabe-Ausgabe-Gerät“ an Computer anschlossen.

1950er — TTY am Großrechner

Die ersten Computer hatten keine Bildschirme. Programmierer saßen vor Teletypes und kommunizierten mit dem Mainframe über genau diesen Schreib-Druck-Apparat.

Großrechner (gigantisch) ↓ Kabel ┌────TTY────┐ │ Tastatur │ ← tippt Befehle │ Drucker │ ← druckt Antworten auf Endlospapier └───────────┘

1970 — Glas-Terminals

Mit Aufkommen von Bildschirmen ersetzte das Video-Terminal (DEC VT100 ist DAS Modell) den Teletype. Plötzlich war die Ausgabe nicht mehr Papier, sondern grünes Glühen auf schwarzem Glas.

Heute — Terminal-Emulator

Auf modernen Computern gibt es keinen echten TTY mehr. Was du nutzt, ist ein Terminal-Emulator: ein Programm, das das Verhalten eines alten VT100 nachstellt. Beispiele: gnome-terminal, konsole, xterm, Windows Terminal, iTerm2, PuTTY.

📜
Wussten Sie schon?

In Linux heißen die virtuellen Konsolen bis heute /dev/tty1 bis /dev/tty6. Mit Strg+Alt+F2 wechselst du auf einer Linux-Maschine mit GUI tatsächlich auf "Teletype 2" — ein Begriff aus den 1950ern, der die Zeit überlebt hat.

6.2

Terminal vs. Konsole vs. Shell — drei Begriffe, drei Bedeutungen

Definition

Diese drei Begriffe werden im Alltag wild durcheinandergeworfen. Technisch sind sie aber drei verschiedene Dinge:

BegriffWas ist das technisch?Beispiel
Terminal Das Programm/Fenster, das die Ein- und Ausgabe darstellt gnome-terminal, iTerm2, Windows Terminal, PuTTY
Konsole Strenggenommen die physische Anzeige direkt am Computer (TTY) Was du siehst, wenn Rocky ohne GUI startet — schwarzer Bildschirm mit Login
Shell Das Programm, das deine Befehle interpretiert und ausführt bash, zsh, fish, sh — läuft im Terminal-Fenster

So passen sie zusammen

┌─────────────────────────────────────┐ │ Terminal-Fenster (Anzeige) │ ← „Terminal“ │ ┌───────────────────────────────┐ │ │ │ $ ls -la │ │ ← deine Eingabe │ │ total 8 │ │ │ │ drwxr-xr-x ... │ │ │ │ $ │ │ │ └───────────────────────────────┘ │ │ ↑ │ │ Shell (bash) liest deine Eingabe, │ ← „Shell“ │ führt Befehle aus, gibt Ergebnis │ │ ans Terminal zurück │ └─────────────────────────────────────┘
💡
Analogie

Stell dir vor, du sitzt im Café: Terminal = der Tisch, an dem du schreibst. Shell = der Kellner, der deine Bestellung versteht und in die Küche weiterleitet. Konsole = die Theke direkt vor dem Koch, wo du auch ohne Tisch essen kannst.

6.3

Shells im Vergleich

Übersicht

„Die Shell“ ist nicht eine Software — es gibt mehrere konkurrierende Implementierungen. Sie unterscheiden sich in Syntax-Details, Komfort-Features und Skript-Kompatibilität.

ShellVoller NameTypische RolleVerbreitet auf
shBourne Shell (1977)Ur-Shell, POSIX-Standard, sehr minimalfast jedes Unix-System
bashBourne Again Shell (1989)De-facto-Standard auf LinuxRocky, Debian, Ubuntu — überall
dashDebian Almquist Shellschlank, schnell, POSIX-reinDebian/Ubuntu (/bin/shdash)
zshZ Shellkomfortabel, viele Features (Oh-My-Zsh)macOS-Default seit 2019
fishFriendly Interactive Shellmoderne Defaults, eigene (nicht-POSIX) SyntaxLinux-Enthusiasten
kshKorn Shellklassische Wahl auf kommerziellen UnixeAIX, Solaris
tcshTenex C ShellSkript-Syntax wie die Sprache CBSD, älteres Unix

Welche Shell läuft bei mir gerade?

bash
echo $SHELL          # zeigt die Login-Shell des Users
                     # z.B. /bin/bash

echo $0              # zeigt die aktuell laufende Shell

cat /etc/shells      # listet alle erlaubten Shells auf dem System
💡
Anekdote: „Bourne Again“

Der Name Bash = „Bourne Again SHell“ ist ein dreifaches Wortspiel: Sie ist eine Wiedergeburt der ursprünglichen Bourne Shell (born again), sie ist besser geworden (bourne → born), und sie ist tatsächlich frei nutzbar (von Brian Fox 1989 unter GPL geschrieben).

6.4

Warum ist Bash der Standard?

Begründung

Wir lernen Bash. Nicht weil es die schickste Shell wäre — sondern aus drei sehr praktischen Gründen:

  1. POSIX-kompatibel. Bash spricht POSIX, den IEEE-Standard für Unix-Shells. Skripte, die du in Bash schreibst, laufen mit minimalen Anpassungen überall.
  2. Überall installiert. Praktisch jedes Linux liefert Bash mit. Auf Rocky/RHEL ist /bin/bash die Default-Login-Shell für alle User. Du musst nichts extra installieren.
  3. Skripting-Tauglich. Bash ist genug Programmiersprache, um ganze Admin-Workflows abzubilden — von Backup-Skripten bis zu CI/CD-Pipelines.

Was Bash nicht ist: schön zu lesen. Erfahrene Admins fluchen über Bash-Syntax mindestens einmal pro Woche. Aber: sie ist universell. Wer Bash kann, kann sich auf jedem Linux-System bewegen — von Embedded-Router bis Cloud-VM.

📊
Marktstellung

Auf etwa 98 % aller Linux-Server ist Bash die Standard-Shell. macOS hat sie 2019 als Default auf zsh getauscht — aber Bash ist auf macOS weiterhin installiert. Im professionellen Admin-Alltag wirst du also mit sehr hoher Wahrscheinlichkeit Bash benutzen.

6.5

Anatomie des Prompts

Lesen lernen

Schau auf deine Konsole. Da steht etwas wie:

[admin@rocky-tn01 ~]$ _ │ │ │ │ │ │ │ └── Eingabezeichen ($ oder #) │ │ └───── Aktuelles Verzeichnis (~ = Home) │ └──────────────── Hostname (Name der Maschine) └────────────────────── Eingeloggter User

Die wichtigste Unterscheidung: $ vs. #

ZeichenBedeutungKonsequenz
$ Du bist als normaler User eingeloggt Kannst nichts Systemweites kaputt machen ohne sudo
# Du bist als root eingeloggt VORSICHT! Jeder Befehl wirkt sofort und ohne Nachfrage
⚠️
Erste Frage in jeder Konsole

Bevor du tippst, schau auf den Prompt: $ oder #? Wenn # → langsamer tippen, doppelt prüfen, evtl. besser rausgehen (exit) und mit sudo nur die einzelnen Befehle.

Den Prompt anpassen: $PS1

Wie der Prompt aussieht, steuert die Umgebungsvariable $PS1 (Prompt String 1). Du kannst sie temporär ändern:

bash
# Aktuelles PS1 anzeigen
echo "$PS1"

# Mini-Demo: Prompt auf "> " setzen (nur diese Session)
PS1="> "

# Standard-Rocky-Prompt wiederherstellen
PS1='[\u@\h \W]\$ '

# Dauerhaft? Eintrag in ~/.bashrc

Häufige Platzhalter in PS1

PlatzhalterBedeutet
\uUsername
\hHostname (kurz)
\HHostname (vollständig)
\wvolles aktuelles Verzeichnis
\Wnur das letzte Verzeichnis (~)
\$$ bei User, # bei root
\taktuelle Uhrzeit (HH:MM:SS)
\dDatum
6.6

Tastenkürzel — die schnellsten Admins kommen ohne Maus aus

Pflicht

Diese Tastenkürzel musst du beherrschen. Sie sparen täglich Stunden, wenn du sie in Muscle Memory hast.

Editieren in der aktuellen Zeile

TastenkürzelFunktion
TabAuto-Completion (Datei-, Befehls-, Optionsnamen)
Tab TabZeigt alle möglichen Vervollständigungen
Strg + ACursor an den Anfang der Zeile
Strg + ECursor ans Ende der Zeile
Strg + UVom Cursor bis Zeilen-Anfang löschen
Strg + KVom Cursor bis Zeilen-Ende löschen
Strg + WVorheriges Wort löschen
Strg + YZuletzt Gelöschtes wieder einfügen (Yank)
Strg + LBildschirm leeren (wie clear)

Befehle und Sessions steuern

Strg + CAktuellen Befehl abbrechen (SIGINT senden)
Strg + DEOF — beendet die Shell-Session (wie exit)
Strg + ZAktuellen Befehl in den Hintergrund pausieren
Strg + RReverse-i-search — durch History suchen ⭐
Strg + S / Strg + QBildschirm einfrieren / fortsetzen (selten gewollt)
Strg + Alt + F2…F6Wechsel zu virtuellen Konsolen (auf Bare-Metal Linux)
Der Game-Changer: Strg+R

Drück Strg+R und tipp ein paar Buchstaben — Bash sucht rückwärts durch deine Befehlshistorie. Weitere Strg+R springt zum nächsten Treffer. Enter führt den Befehl aus, Esc übernimmt ihn in die Zeile zum Editieren. Wer einmal Strg+R lernt, will nie wieder ohne arbeiten.

⚠️
Falle: Strg+S

Drückst du aus Reflex (wie in Word) Strg+S, friert die Anzeige ein. Strg+Q taut sie wieder auf. Wer das nicht weiß, glaubt das Terminal sei kaputt.

6.7

Die History — was du schon getippt hast

Produktivität

Bash speichert jeden Befehl in einer Datei (~/.bash_history). Default: die letzten 1000 Befehle. Damit lässt sich rumspielen:

bash
history              # zeigt komplette History
history | tail -20   # nur die letzten 20

!!                   # führt den vorherigen Befehl nochmal aus
sudo !!              # vorheriger Befehl, diesmal mit sudo
                     # (klassischer Lebensretter!)

!42                  # führt Befehl Nummer 42 aus der History aus
!ls                  # führt den letzten Befehl aus, der mit "ls" anfing
!?config?            # führt den letzten Befehl aus, der "config" enthält

^alt^neu             # wiederhole letzten Befehl, ersetze "alt" durch "neu"
                     # Beispiel: cat /ets/hosts → ^ets^etc → cat /etc/hosts

History mit Pfeiltasten

Einfacher als !42 ist meistens:

  • Pfeil hoch ↑ — vorheriger Befehl
  • Pfeil runter ↓ — nächster Befehl
  • Pos1 / Ende — Anfang / Ende der Zeile
💡
Profi-Tipp

Befehl mit Leerzeichen davor tippen lässt ihn nicht in der History landen — perfekt für sensible Daten wie temporäre Passwörter. Aktiviert ist das auf Rocky standardmäßig durch HISTCONTROL=ignoreboth in /etc/bashrc.

6.8

Tab-Completion — schneller tippen als denken

Pflicht

Bash hilft dir beim Tippen. Tab ist deine wichtigste Taste — wichtiger als Enter.

Beispiele

tab demos
# Befehlsname vervollständigen
$ syst<TAB>
$ systemctl

# Dateinamen vervollständigen
$ cd /etc/sys<TAB>
$ cd /etc/systemd/

# Wenn mehrere Optionen passen, einmal Tab macht NICHTS,
# zweimal Tab listet alle Möglichkeiten
$ cat /etc/host<TAB><TAB>
hostname  hosts  hosts.allow  hosts.deny

# Auch Optionen werden vervollständigt
$ systemctl sta<TAB>
start  status
🎯
Goldene Regel

Tippe nie einen langen Pfad komplett aus. Bis zur ersten Mehrdeutigkeit tippen → Tab → weiter tippen → Tab → fertig. Das spart Tippfehler und Sekunden. Profis tippen mit ~30 % Tab-Anteil.

6.9

man und --help — die Lebensretter

Doku

Niemand erinnert sich an alle Optionen aller Befehle. Linux hat eine Eigenschaft, die es Windows weit voraus hat: jede Software bringt ihre Dokumentation mit.

Drei Arten, Hilfe zu finden

help
# 1) Kurze Hilfe direkt am Befehl
ls --help
cp --help
sudo --help

# 2) Vollständige Manpage
man ls
man cp
man sudo

# 3) Wenn du nicht weißt, welcher Befehl es ist:
apropos "search files"     # durchsucht Beschreibungen
whatis ls                  # einzeilige Beschreibung

In man navigieren

Space / Bild ↓nächste Seite
b / Bild ↑vorherige Seite
/begriffVorwärts-Suche
n / Nnächster / vorheriger Treffer
g / Gzum Anfang / Ende springen
qman beenden
hman-Hilfe anzeigen

Manpage-Sektionen verstehen

Manpages sind in 9 Sektionen aufgeteilt. Steht in der Kopfzeile, z.B. LS(1) bedeutet „ls aus Sektion 1“.

SektionBedeutungBeispiel
1User-Befehle (ausführbare Programme)ls, cp
2System-Aufrufe (Kernel-API)open, read
3Bibliotheksfunktionen (C-Lib)printf, malloc
4Spezialdateien (/dev)tty, null
5Dateiformatepasswd, fstab
6Spielenethack
7Konventionen, Miscsignal, regex
8Admin-Befehlemount, shutdown
9Kernel-interneselten

Wichtig: Manche Wörter haben mehrere Manpages! passwd ist sowohl ein Befehl (Sektion 1) als auch ein Dateiformat (Sektion 5). Mit man 5 passwd sprichst du gezielt das Dateiformat an.

💡
Praxis-Tipp

man man — die Manpage über das Manpage-System. Klingt albern, ist aber tatsächlich eine der besten Erklärungen für die Sektionen.

🎯

Mini-Quiz: Was macht Strg+R?

Selbst-Check

Bevor wir weitergehen, schnell drei Verständnisfragen für zwischendurch:

Bash sucht rückwärts durch die History nach dem letzten Befehl, der „inst“ enthält — z.B. sudo dnf install nano -y. Weiteres Strg+R springt zum nächst-älteren Treffer. Enter = ausführen, Esc = in Zeile übernehmen.

Mit Strg+C nano abbrechen (oder im Editor speichern und beenden), dann sudo !! — das wiederholt den letzten Befehl mit sudo davor: sudo nano /etc/<datei>. Spart das Hochpfeilen und Vorne-Voranstellen von „sudo“.

man 5 passwd — die 5 ist die Sektions-Nummer für Dateiformate. Ohne Nummer zeigt man die erste Übereinstimmung, das wäre Sektion 1 (Befehl passwd).

🎯

Kontrollfragen zum Kapitel

Abschluss
  1. Erkläre in eigenen Worten den Unterschied zwischen Terminal, Konsole und Shell.
  2. Welche Shell ist auf Rocky Linux der Standard? Wofür steht ihr Name?
  3. Was unterscheidet das Prompt-Zeichen $ von #?
  4. Wie zeigst du an, welche Shell gerade läuft?
  5. Nenne mindestens fünf Tastenkürzel, die du beherrschen solltest.
  6. Welcher Befehl wiederholt den letzten Befehl, diesmal mit sudo?
  7. Wie findest du heraus, welche Optionen ls hat?
  8. Was bedeutet die 5 in man 5 passwd?
  1. Terminal = das Programm, das die Ein-/Ausgabe darstellt (Fenster). Konsole = der physische TTY-Bildschirm direkt am Rechner. Shell = das Programm, das Befehle interpretiert (Bash, Zsh, …).
  2. Bash — „Bourne Again SHell“. Wortspiel auf die ursprüngliche Bourne Shell von 1977.
  3. $ = normaler User · # = root. Bei # ist äußerste Vorsicht geboten, jeder Befehl wirkt sofort und ohne Schutz.
  4. echo $SHELL (Login-Shell) oder echo $0 (aktuelle Shell).
  5. Beispiele: Tab, Strg+R, Strg+C, Strg+D, Strg+L, Strg+A, Strg+E, Strg+U.
  6. sudo !!
  7. ls --help (kurze Übersicht) oder man ls (vollständig).
  8. Die Sektions-Nummer der Manpage — hier 5 = Dateiformate. man 5 passwd zeigt also das Format der /etc/passwd-Datei, nicht den Befehl passwd.