Anmerkungen zum Terminal

Das Terminal

Wenn Ihr ein Terminal öffnet, sollte es ungefähr so aussehen:

user@system:~$

Beschreibung des Prompts

Was steht da eigentlich drin in diesem Terminal?

Am Anfang einer Zeile steht ein so genannter Prompt. Ist dieser Prompt vorhanden, wartet das Terminal auf eine Eingabe. Der Prompt besteht standardmäßig aus:

user@system

Angemeldeter Benutzer @ Rechnername, in der Regel grün dargestellt.

:

Doppelpunkt als Trennzeichen, in der Regel weiß dargestellt.

~

Aktueller Ordner, in dem Ihr Euch gerade befindet, in diesem Fall das Heimatverzeichnis, mehr dazu später. Der Ordner wird in der Regel blau dargestellt.

$

Das $-Zeichen bedeutet, dass Ihr als normaler Benutzer angemeldet seid.

Solltet Ihr als root (Administrator) angemeldet sein, erscheint hier ein #.

Ist der Prompt vorhanden, wartet das Terminal auf Eure Eingabe. Wird der Prompt nicht angezeigt, wird gerade ein Programm ausgeführt. Ist das Programm fertig, erscheint der Prompt.

Peröhnliches Anpassen des Prompts

Einige Nutzer bevorzugen es, den Prompt zu ändern. Einige lassen sogar jedesmal ein Programm ablaufen und zeigen sich deren Ausgabe an.

Was genau im Prompt drin steht, kann man mit folgendem Befehl abfragen:

user@system:~$ echo $PS1

Temporäres Ändern des Prompts

Um den Prompt zu temporär ändern, genügt es, die Variable PS1 zu ändern. Beispiel:

user@system:~PS1="Hallo Klaus. $"

Nun habt Ihr einen neuen Prompt. Öffnet Ihr erneut ein Terminal, ist der alte Prompt wieder da.

Globales Ändern des Prompts

Um den Prompt zu für immer ändern, müsst Ihr die Datei .bashrc in Eurem Heimatordner anpassen. Dort wird die Variable PS1 definiert und angepasst.

Hierzu sollten Erfahrungen mit der Shell vorhanden sein. Als Einsteiger sollte man da erst mal die Finger davon lassen.

Ein Programm im Terminal starten

Immer, wenn Ihr etwas im Terminal eingebt, wird ein Programm gestartet. Beispiel:

user@system:~$ ls

Nun gibt das Programm ls den Inhalt des aktuellen Ordners aus. Danach beendet es und das Terminal gibt wieder den Prompt aus.

Damit ein Programm ausgeführt werden kann, muss es gefunden werden. Die meisten Programme befinden sich in den Ordner /usr/bin/ und /bin/. Wo das System nach Programmen sucht, erfahrt Ihr mit folgender Eingabe:

user@system:~$ echo $PATH

Es gibt aber auch die Möglichkeit, Programme zu starten, die nicht in diesen Ordnern sind. Hierzu muss der Pfad mit angegeben werden. Beispiel:

user@system:~$ /home/kay/programme/c++/getSunriseTimes/getSunriseTimes

Kay hat sich ein Programm getSunriseTimes programmiert, welches in dem Ordner /home/kay/programme/c++/getSunriseTimes/ liegt.

Bitte schaut dazu Euch die Seite zur Verzeichnisstruktur an.

Ein Programm im Hintergrund im Terminal starten

Bisher haben wir die Programme im Vordergrund gestartet. Es gibt Programme, die über längerer Zeit oder sogar endlos laufen. Startet man ein solches Programm, hat man keinen Prompt und man kann nichts mit dem Terminal tun.

Deshalb kann man auch Programme im Hintergrund starten. Hierzu gibt man ein &-Zeichen am Ende ein. Beispiel:

user@system:~$ sleep 120 &

Es erscheint sofort wieder der Prompt und man kann mit dem Terminal weiter arbeiten. So gestartete Programme dürfen keine Eingabe vom Nutzer erwarten, sonst bleiben sie einfach stehen und liegen als Leiche im System. Man muss es in den Vordergrund holen, damit man die Eingabe machen kann.

Ein Programm vom Vordergrund in den Hintergrund schieben

Manchmal möchte man ein im Vordergrund laufendes Programm in den Hintergrund schieben. Dazu folgendes Beispiel:

user@system:~$ sleep 120

Nun hat man keinen Prompt. Man drückt die Tastenkombination STRG+z, das Programm sleep wird angehalten, es erscheint ein Prompt. Nun folgt der Befehl:

user@system:~$ bg

bg steht für background. Das Programm sleep wird in den Hintergrund geschoben und fortgesetzt. Mit dem Terminal kann weiter gearbeitet werden.

Ein Programm vom Hintergrund in den Vordergrund holen

Hierzu folgendes Beispiel:

user@system:~$ sleep 120 &

user@system:~$ jobs

jobs listet die im Hintergrund laufenden Programme auf. Hier sucht man sich die dazu passende Zahl aus und ruft fg auf:

user@system:~$ fg 1

fg steht für foreground.

Mehrere Programme in einer Anweisung starten

user@system:~programm1;programm2;programm3

Programme nacheinander ausführen:
Zuerst wird programm1 gestartet. Wird es beendet, startet programm2. Wird dieses beendet, startet programm3. Nach Beendigung des dritten Programms erscheint der Prompt.

user@system:~programm1 && programm2

UND-Verknüpfung: Zuerst wird programm1 gestartet. Wird es ohne Fehler beendet, startet programm2.

user@system:~programm1 || programm2

ODER-Verknüpfung: Zuerst wird programm1 gestartet. Wird es mit Fehler beendet, startet programm2.

user@system:~programm1 | programm2

PIPE: Beide Programme werden gestartet. Die Ausgabe von programm1 wird zur Eingabe von programm2

user@system:~programm1 & programm2 & programm3

programm1 und programm2 werden gestartet und in den Hintegrund geschoben. programm3 wird gestartet und bleibt im Vordergrund.

Das Terminal steuern

Es gibt ein paar hilfreiche Tastenkombinationen für das Terminal:

Tastenkombination

Beschreibung

TAB

Autovervollständigen. Das System kennt Programmnamen und Pfade. Kann das System Eure Eingabe zuordnen, wird der Befehl vervollständigt. Kann das System Eure Eingabe nicht zuordnen, kann durch ein zweites Drücken der TAB-Taste existierende Möglichkeiten angezeigt werden.

und

Durch die zuletzt eingegebenen Befehle navigieren. So braucht man nicht wiederkehrende Befehle jedes mal neu eingeben.

Shift + BildAuf und Shift + BildAb

Seitenweise durch die letzten Ausgaben blättern.

Strg+c

Das im Vordergrund laufende Programm wird abgebrochen.

Strg+d

EOF-Zeichen senden. EndOfFile-Zeichen brauchen manche Programme, damit sie wissen, wann die mehrzeilige Eingabe zu Ende ist. Beispiel:

user@system:~$ cat

Alles, was Ihr eingebt, wiederholt die Konsole mittels Programm cat. Um das Programm zu beenden, drückt man STRG+d.

Da das Terminal selbst ein Programm ist, was auf mehrzeilige Eingaben wartet, kann es ebenfalls mit STRG+d beendet werden oder man kann sich ausloggen.

Strg+z

Das im Vordergrund laufende Programm wird angehalten, bleibt aber im Speicher.

Strg+l

l wie Ludwig. Terminal wird geleert. Alle bisherigen Ausgaben verschwinden auf dem Terminal.

Strg+s

Alle Ein- und Ausgaben anhalten. Programme, die auf eine Eingabe warten oder eine Ausgabe erzeugen, werden ebenfalls angehalten. Fortsetzen kann man das mit STRG+q

Strg+q

Alle Ein- und Ausgaben fortsetzen. Siehe STRG+s.

Shift+Strg+c

Nur Terminal: Der markierte Bereich wird in die Zwischenablage kopiert.

Shift+Strg+v

Nur Terminal: Daten aus der Zwischenablage werden in das Terminal geschrieben.

Anmerkung zu folgenden Seiten

Auf den folgenden Seiten lasse ich den Prompt weg. Statt

user@system:~$ sleep 120

steht dann nur noch

sleep 120

So habt Ihr es einfacher beim Kopieren dieser Anweisungen.