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.
Wenn Ihr ein Terminal öffnet, sollte es ungefähr so aussehen:
user@system:~$
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.
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
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.
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.
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.
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.
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.
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.
user@system:~programm1;programm2;programm3 | Programme nacheinander ausführen: |
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 und programm2 werden gestartet und in den Hintegrund geschoben. programm3 wird gestartet und bleibt im Vordergrund. |
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. |
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.