Kommandozeile und Shell unter Linux
Willemers Informatik-Ecke

Unter Linux werden Terminalsitzungen häufiger eingesetzt als bei den meisten anderen Systemen. Dafür gibt es mehrere Gründe:

Terminalstart

Ein Terminal war ursprünglich ein Gerät aus Monitor und Tastatur, in das man Kommandozeilenbefehle eintippen konnte. Heute werden fast nur noch Terminal-Emulationen verwendet. Sie sind typischerweise auf folgenden Wegen erreichbar: In dem Terminal wird automatisch ein Kommandointerpreter gestartet, der als Shell bezeichnet wird. Die standardmäßig unter Linux verwendete Shell heißt bash.

Befehlsstruktur

Cursor und Prompt

Im Terminal gibt es eine Stelle, an der man eingeben kann. Ein schwarzes oder weißes oft blickendes Rechteck markiert diese Position. Dieses Rechteck nennt man Cursor.

Links daneben befindet sich der Prompt. Dort steht üblicherweise zuerst der Benutzernamen, unter dem man angemeldet ist, gefolgt von einem @ und dann dem Computernamen. Es folgt der aktuelle Pfad, wobei eine ~ (Tilde) für das Heimatverzeichnis steht.

Zum Schluss sieht man ein Dollarzeichen $ oder einen Lattenzaun #. Der Lattenzaun bedeutet, dass man Administratorrechte - im Linux-Jargon auch root-Rechte genannt - besitzt.

Befehlsaufbau

Die Eingaben in ein Terminal folgen immer der gleichen Struktur.

Befehl Option Argument

Befehle

Es gibt einige Befehle, die die Shell selbst kennt. Die meisten Befehle sind aber Programme. Typischerweise sind sie in /bin oder /usr/bin vom Administrator (root) installiert worden.

Programme, die woanders liegen, muss der Pfad vorangestellt werden. Alternativ kann der Pfad in eine durch Doppelpunkte separierte Liste in der Umgebungsvariablen PATH abgelegt werden. Ein Programm im aktuellen Arbeitsverzeihnis darf aus Sicherheitsgründen nur durch Voranstellen von ./ ausgeführt werden.

Optionen

Optionen für die Programme werden durch ein Minuszeichen eingeleitet. Die klassischen Optionen bestehen aus einem Buchstaben. Mehrere Optionen können zu einer zusammengefasst werden:
befehl -a -c -d argument
befehl -acd argument
Es gibt auch ausgeschriebene Optionen. Um diese von den kombinierten einfachen Optionen zu unterscheiden, werden sie durch zwei Minuszeichen eingeleitet.
ls -a
ls --all
Eine der wenigen Ausnahmen ist das Programm find. Dieses verwendet sprechende Optionsnamen mit nur einem Minuszeichen.

Manche Optionen verlangen ein Argument. Die Argumente der Optionen müssen dann in der richtigen Reihenfolge hinter den Optionen aufgeführt werden.

Argumente

Befehle haben oft Argumente, die die Objekte bezeichnen, auf denen der Befehl wirkt. Oft sind das Dateinamen. Die Argumente werden einfach nacheinander, durch Leerzeichen getrennt, aufgeführt.

Um Dateinamen anzusprechen, werden Wildcards verwendet. So steht ein Fragezeichen für genau ein Zeichen und ein Stern für eine beliebige Anzahl beliebiger Zeichen. Die Auflösung der Wildcards wird durch die Shell ausgeführt und als Liste an den Befehl weitergereicht.

Ausgaben, Fehlermeldungen und Ausgabeumleitungen

Ein Linux-Befehl erzählt nicht mehr als er muss. Er liefert seine Ergebnisse, so es welche gibt, auf der Standardausgabe ab. Sollte es ein Problem gegeben haben, werden entsprechende Fehlermeldungen auf dem Fehlerkanal ausgegeben. Beide Kanäle liegen standardmäßig auf der Terminalausgabe.

Mit dem Größerzeichen können Sie Ausgaben der Standardausgabe in eine Datei umleiten. Diese wird zuvor gelöscht, falls sie schon exisitierte.

ls -l > inhalt.txt
Wenn Sie zwei Größerzeichen verwenden, werden die Ausgaben an den bisherigen Inhalt der Datei angehängt.
ls -l >> inhalt.txt
Fehlerausgaben können mit einer 2 vor dem Größerzeichen umgeleitet werden. Wenn im folgenden der Eintrag einer nicht existenten Datei mit ls angezeigt werden soll, wird ls eine Fehlermeldung geben, die nun in die Datei fehler.txt umgeleitet wird.
ls diesedateigibtesgarnicht  2> fehler.txt
In manchen Fällen will man störende Fehlermeldungen gar nicht sehen, dann kann man sie in den Mülleimer von Linux ausgeben. Dieser Mülleimer heißt /dev/null.
ls diesedateigibtesgarnicht  2> /dev/null

Befehle kombinieren

Sie können auch die Ausgabe eines Programms in die Eingabe eines anderen Programms umleiten. Dazu wird eine Pipe verwendet. Das folgende Beispiel schickt die Ausgabe der Dateiliste durch das Programm grep, das die Eingabe nach Suchbegriffen filtert. Sie würden also alle Dateien erhalten, die arnold im Dateinamen haben, aber auch solche, die dem Benutzer arnold gehören.
ls -l | grep arnold

Hintergründiges

Einen Befehl der länger läuft, können Sie in den Hintergrund schieben, indem Sie ihm ein kaufmännisches Und (Ampersant) anhängen. Das Terminal ist sofort wieder frei.

Allerdings wird die Ausgabe des hintergründigen Befehls immer noch auf das Terminal ausgegeben. Das kann man über den Befehl nohup erreichen. Dieser war ursprünglich dazu gedacht, dass ein im Hintergrund laufender Prozess, der per ssh gestartet wurde, beim Auslogggen nicht gestoppt wurde, aber er hat auch lokal die nette Eigenschaft, dass die Ausgaben in die Datei nohup.out umgeleitet wird.

nohub befehl &
Sind mehrere Befehle in den Hintergrund geschickt worden, können sie mit dem Befehl jobs angezeigt werden. Sie bekommen dabei eine Nummer. Sie können einen solchen Prozess mit kill %nummer beenden.
arnold@puma ~ $ jobs
[1]-  Läuft                  xman &
[2]+  Läuft                  xedit &
arnold@puma ~ $ kill %2
arnold@puma ~ $ jobs
[1]-  Läuft                  xman &
[2]+  Beendet                 xedit
arnold@puma ~ $ 

Befehl stoppen und abbrechen

Ein Befehl kann mit [Strg]+[C] abgebrochen werden. Wenn Sie beispielsweise ein Programm xman starten, können Sie es mit der Tastenkombination [Strg]+[C] abbrechen. Der Prozess erhält dabei das kill-Signal 15 zum Beenden.

Sie können einen laufenden Prozess auch mit [Strg]+[Z] anhalten. Dann wird er nicht abgebrochen, sondern eingefroren. In der jobs-Liste taucht er wieder auf als „Angehalten“. Sie können ihn mit bg %nummer im Hintergrund und mit fg %nummer im Vordergrund reaktivieren.

Bewegen im Dateisystem

Das Dateisystem eine Linux-Rechners ist nach einfachen Regeln aufgebaut. Es gibt genau einen Verzeichnisbaum, nicht wie bei anderen Systemen für jedes Laufwerk ein eigenes (C:, D:, ... Sie wissen schon). Ach ja: Der Verzeichnistrenner ist nicht Backslash (\), sondern Slash (/). Der ist so viel einfacher zu bedienen, dass ihn inzwischen sogar Windows versteht.

Und dann gibt es klare Regeln, wo sich welche Dateien befinden.

Dateibefehle

Hilfstasten

Cursortasten

Mit der Pfeiloben-Taste holen Sie sich den letzten Befehl zurück. Sie können die Taste mehrfach drücken. Mit der Pfeilunten-Taste können Sie dann auf neuere Befehle zurückgreifen.

Mit Pfeil links und rechts können Sie den aktuellen Befehl korrigieren. [Backspace], [Entf], [Pos1] und [Ende] funktionieren erwartungsgemäß. Mit [Stg]+[K] lässt sich der Rest der Zeile entfernen.

Scrollen mit Bild-oben und -unten

Sollten Ausgaben aus dem Bildschirm herausgerollt sein, kann man mit der Tastenkombination [Shift]+[Bild oben] und [Shift]+[Bild unten] durch die bisherigen Ausgaben durchblättern.

Die Taste [Shift] wird auch Hochstelltaste genannt. Sie befindet sich über der [Strg]-Taste ist mit einem fetten Pfeil nach oben markiert und sorgt dafür, dass statt einem a ein A erscheint.

Autovervollständigung per Tab-Taste

Befehle und Dateinamen müssen Sie oft nicht austippen. Geben Sie die ersten Buchstaben aus und drücken Sie die [Tab]-Taste. Sie befindet sich links neben [Q] und über der [Caps]-Taste.

Ist das bisher getippte Wort eindeutig, wird das Wort automatisch ergänzt.

Ist es noch nicht eindeutig, führt ein weiteres Tippen der [Tab]-Taste dazu, die zur Verfügung stehenden Optionen anzuzeigen.

Geschichtsforschung mit [Strg]+[R]

Wenn Sie einen Befehl benötigen, der vor einiger Zeit eingegeben wurde, verwenden Sie die Tastenkombination [Strg]+[R]. Es erscheint das Wort (reverse-i-search) statt des Prompts. Nun geben Sie Buchstabe für Buchstabe ein, bis der gesuchte Befehl erscheint.

Ist der Begriff zwar richtig gefunden, aber Sie suchen eigentlich einen Befehl mit dem Suchbegriff, der davor eingegeben wurde, drücken Sie noch einmal die Kombination [Strg]+[R].

Editor

Es gibt mehrere Editoren unter Linux. Persönlich bevorzuge ich den vi. Allerdings lernt man ihn erst nach längerer Einarbeitung schätzen. Anfänger verwenden oft lieber nano.

nano

Aufruf erfolgt durch den Befehl nano gefolgt von der Datei, die man bearbeiten will. Dann sieht man die Datei, durch die man mit den Pfeil- und Bild-Tasten wandern kann. Backspace und Entfern-Taste funktionieren wie in jedem Editor.

Das Verlassen erfolgt mit der Kombination:

Hier ein paar hilfreiche Seiten: