Zum Inhalt springen

Kommandos

Ein Shell-Befehl folgt immer demselben Grundmuster:

befehl [optionen] [argumente]
Terminal-Fenster
ls -lh /etc
# ^ ^^ ^^^^
# | || Argument: Pfad, auf den ls angewendet wird
# | Optionen: -l (lange Ausgabe) und -h (menschenlesbare Größen)
# Befehl

Optionen verändern das Verhalten eines Befehls. Sie werden üblicherweise in zwei Formen angegeben:

FormBeispielBedeutung
Kurzform-lEin Bindestrich, ein Buchstabe
Langform--allZwei Bindestriche, ein Wort

Kurzoptionen lassen sich kombinieren: -l -a -h ist identisch mit -lah.

Terminal-Fenster
ls -lah /etc
ls --all /etc # identisch mit ls -a /etc
rm -rf ordner/ # kombiniert: -r (rekursiv) + -f (force)

Argumente sind die Eingaben, auf die der Befehl wirkt – typischerweise Dateipfade, Hostnamen oder sonstige Werte.

Die bash kennt fünf Arten von Kommandos, die in dieser Reihenfolge gesucht werden:

  1. Alias – ein selbst definierter Kurzname für einen längeren Befehl
  2. Shell-Funktion – eine in der Shell-Konfiguration definierte Funktion
  3. Builtin – in die Shell eingebaut; kein externes Programm (z. B. cd, echo, exit)
  4. Externes Programm – eine ausführbare Datei, die über $PATH gefunden wird
  5. Absoluter Pfad – direkter Aufruf über den vollständigen Pfad
Terminal-Fenster
type cd # cd is a shell builtin
type ls # ls is /usr/bin/ls
type ll # ll is aliased to `ls -alF`
type grep # grep is /usr/bin/grep

Externe Programme werden nicht überall gesucht – sondern nur in den Verzeichnissen, die in der Umgebungsvariablen $PATH aufgelistet sind:

/home/alice/.local/bin
echo $PATH

Die Einträge sind durch : getrennt. Die Shell durchsucht sie von links nach rechts und nimmt das erste gefundene Programm.

/usr/bin/ls
which ls # zeigt den vollständigen Pfad des gefundenen Programms
which python3
# /usr/bin/python3

Die Tab-Taste ist eines der wichtigsten Produktivitätswerkzeuge der Shell. Sie vervollständigt Befehle, Dateipfade und – bei vielen Programmen – sogar Optionen:

Terminal-Fenster
ls /etc/ssh/ssh<Tab>
# → ls /etc/ssh/ssh_config (eindeutig: wird direkt vervollständigt)
ls /etc/s<Tab><Tab>
# → ssh/ ssl/ sysctl.conf systemd/ ... (mehrdeutig: alle Möglichkeiten werden angezeigt)

Einmaliges Tab: vervollständigt, wenn eindeutig. Zweimaliges Tab: zeigt alle Möglichkeiten.

Die Shell speichert ausgeführte Befehle in einer Historiedatei (~/.bash_history). Der schnellste Zugriff:

Taste / BefehlFunktion
/ Vorherigen / nächsten Befehl
Strg+RRückwärts-Suche in der Historie
historyAlle gespeicherten Befehle anzeigen
!42Befehl Nummer 42 aus der Historie ausführen
!!Letzten Befehl wiederholen
!lsLetzten Befehl, der mit ls begann, wiederholen
Terminal-Fenster
Strg+R
(reverse-i-search)`ssh': ssh alice@server.beispiel.de

Wie man zu einem Befehl Hilfe bekommt – über --help, man und weitere Quellen – ist im Abschnitt Hilfe & Dokumentation ausführlich beschrieben.