jsh(1) jsh(1)
NAME
jsh - Bourne-Shell mit Auftragssteuerung (job control)
SYNTAX
jsh [option ...] [argument ...]
BESCHREIBUNG
jsh ist eine Bourne-Shell (sh) mit Auftragssteuerung (job control).
Mit der Auftragssteuerung können Sie zusätzlich zur normalen Funktio-
nalität der Bourne-Shell:
- Aufträge stoppen,
- Aufträge in den Hintergrund schicken,
- Aufträge aus dem Hintergrund in den Vordergrund holen und
- über Auftragsnummern einfacher auf Aufträge zugreifen.
Die Auftragssteuerung werden Sie im Regelfall nur bei einer Shell aus-
nutzen, mit der Sie interaktiv arbeiten, also einer Login-Shell oder
einer Subshell. Eine Shell, die Shell-Prozeduren ausführt, kann diese
Erweiterung nicht ausnutzen.
Die Auftragsteuerung ist realisiert durch
- die Einführung von Aufträgen (jobs) mit verschiedenen Zuständen,
- neue eingebaute Shell-Kommandos,
- die Erweiterung bestehender eingebauter Shell-Kommandos.
Die Beschreibung von option und argument finden Sie bei der Beschrei-
bung der Bourne-Shell sh(1): In diesem Bereich gibt es keine Unter-
schiede zwischen den beiden Shells.
ARBEITSWEISE
Für jsh ist jedes Kommando oder jede Pipeline, die von Ihnen am Termi-
nal eingegeben wurde, ein Auftrag. Jeder existierende Auftrag nimmt
einen der drei möglichen Zustände ein:
Vordergrund
Dieser Auftrag hat Lese- und Schreibzugriff auf das kontrollie-
rende Terminal.
Hintergrund
Diesem Auftrag wurde der Lesezugriff auf das kontrollierende Ter-
minal entzogen, er besitzt aber möglicherweise Schreibzugriff
[siehe stty(1)].
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
jsh(1) jsh(1)
gestoppt
Dieser Auftrag wurde angehalten - normalerweise durch das Signal
SIGTSTP [siehe signal(5)].
Jedem gestarteten Auftrag weist jsh eine positive ganze Zahl zu, die
sogenannte Auftragsnummer. Diese Nummer wird von jsh als Bezeichner
zur Identifizierung eines Auftrags weiter verfolgt. Zusätzlich kennt
die Shell noch den aktuellen und den vorherigen Auftrag. Der aktuelle
Auftrag ist der zuletzt aufgerufene oder wieder aufgerufene Auftrag.
Der vorherige Auftrag ist der erste nicht-aktuelle Auftrag.
Die Syntax eines Auftragsbezeichners sieht wie folgt aus:
%auftragsbezeichner
auftragsbezeichner kann sein:
% oder +
der aktuelle Auftrag
- der vorherige Auftrag
?zeichenkette
der Auftrag, der in der Kommandozeile eindeutig zeichenkette ent-
hält
nummer
der Auftrag mit der Auftragsnummer nummer
präfix
der Auftrag, dessen Kommando mit der Zeichenkette präfix beginnt.
präfix darf entwertete Leerzeichen enthalten.
Beispiel: Das Hintergrund-Kommando ls -l ... können Sie mit %ls
ansprechen.
Einen Auftrag können Sie durch Drücken der Tastenkombination CTRL-Z
anhalten. Diese sorgt dafür, daß ein STOP-Signal an den Auftrag
geschickt wird. jsh zeigt dann an, daß der Auftrag gestoppt wurde und
gibt ein Bereitzeichen aus. Die Tastenkombination CTRL-Z bewirkt eine
sofortige Reaktion (vergleichbar der Unterbrechungstaste DEL).
Vorsicht:
Verwenden Sie jsh zusammen mit shl, dann müssen Sie das switch-
Zeichen [siehe stty(1)] neu definieren, damit das suspend-Zeichen
nicht deaktiviert wird.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
jsh(1) jsh(1)
KOMMANDOS
Die folgenden eingebauten Shell-Kommandos können Sie nach dem Bereit-
zeichen PS1 (Standard: $ ) eingeben:
bg [%auftragsbezeichner ...]
Die Ausführung eines gestoppten Auftrags wird im Hintergrund
fortgesetzt. Der oder die gestoppten Aufträge werden durch
auftragsbezeichner angegeben. Bei fehlendem auftragsbezeichner
wird der aktuelle Auftrag fortgesetzt.
fg [%auftragsbezeichner ...]
Es wird entweder die Ausführung eines gestoppten Auftrags im Vor-
dergrund fortgesetzt oder ein Auftrag, der im Hintergrund ausge-
führt wird, in den Vordergrund geholt. Der oder die Aufträge wer-
den durch auftragsbezeichner angegeben. Ist auftragsbezeichner
nicht angegeben, so wird der aktuelle Auftrag verwendet.
jobs [-l|-p] [%auftragsbezeichner ...] Format 1
jobs -x kommando [argument ...] Format 2
Format 1: Information über Aufträge ausgeben
Information über Aufträge, die im Hintergrund ausgeführt werden
oder gestoppt sind, wird auf die Standardausgabe geschrieben.
Fehlt auftragsbezeichner, dann wird die Information über alle
Aufträge auf die Standardausgabe geschrieben.
Die folgenden Optionen verändern die Ausgabe von jobs:
-l Die Prozeßgruppennummer und das aktuelle Verzeichnis der
Aufträge werden auf die Standardausgabe geschrieben.
-p Nur die Prozeßgruppennummer der Aufträge wird auf die Stan-
dardausgabe geschrieben.
Format 2: Kommando auf Aufträge ausführen
Dieses Kommando ersetzt jeden Auftragsbezeichner, der in kommando
und argument gefunden wird, durch die entsprechende Prozeßgrup-
pennummer und führt dann das so erhaltene Kommando mit den Argu-
menten aus.
kill [signal] %auftragsbezeichner
Dies ist die in die Shell sh eingebaute Version des kill-Komman-
dos. Sie bietet, im einzigen Unterschied zum Kommando kill, die
Möglichkeit der Angabe der Prozeßnummer durch einen
auftragsbezeichner.
stop %auftragsbezeichner ...
Die Ausführung des Hintergrundauftrags auftragsbezeichner wird
gestoppt.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
jsh(1) jsh(1)
suspend
Die Ausführung der aktuellen jsh wird gestoppt. Dies trifft
jedoch nicht zu, wenn sie eine Login-Shell ist.
wait [%auftragsbezeichner ...]
Diese Version des eingebauten Shell-Kommandos wait versteht
auftragsbezeichner als Argument. Bei fehlendem auftragsbezeichner
verhält sich wait wie die in sh eingebaute Version, sonst wird
auf die Beendigung des oder der Hintergrundaufträge gewartet.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte.
In Mustern zur Dateinamensgenerierung bestimmt die Umgebungsvariable
LCCOLLATE die Bedeutung von Zeichenbereichen, Äquivalenzklassen und
Zeicheneinheiten, die Umgebungsvariable LCCTYPE die Bedeutung von
Zeichenklassen. LCCTYPE bestimmt zusätzlich, welche Zeichen des aktu-
ell gültigen Zeichensatzes als Buchstaben definiert sind.
Wenn LCMESSAGES, LCCOLLATE oder LCCTYPE nicht oder als leere Zei-
chenkette definiert ist, wird der Wert von LANG als Standardwert für
die jeweils nicht gesetzte oder leere Variable herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Hat eine der Variablen für die internationale Umgebung einen ungülti-
gen Wert, verhält sich das System so, als wäre keine Variable gesetzt.
BEISPIELE
Im folgenden finden Sie ein kurzes Beispiel für den Umgang mit Aufträ-
gen in der Shell jsh.
Sie rufen die Shell auf mit der Eingabe von:
$ jsh
Ändern Sie zur besseren Orientierung den Prompt:
$ PS1="jsh> "
Sie Suchen nach einer Datei namens test. Starten Sie dazu das Kommando
find im Hintergrund:
jsh> find / -name test -print &
Die Shell gibt als Ergebnis die Jobnummer 1 und die Prozeßnummer 28071
aus:
[1] 28071
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
jsh(1) jsh(1)
Sie lassen sich eine Liste mit allen aktuellen Aufträgen ausgeben:
jsh> jobs
[1] + Running find / -name test -print
Sie beenden Auftrag Nummer 1 (find-Kommando):
jsh> stop %1
Sie lassen sich eine Liste mit allen aktuellen Aufträgen ausgeben:
jsh> jobs
[1] + Stopped (signal) find / -name test -print
Sie lassen den aktuellen Auftrag (find-Kommando) im Hintergrund wei-
terlaufen:
jsh> bg %%
Die Shell gibt das reaktivierte Kommando aus:
[1] find / -name test -print &
Sie brechen den Auftrag find ab:
jsh> kill %find
Sie lassen sich eine Liste aller aktuellen Aufträge ausgeben.
jsh> jobs
[1] + Terminated find / -name test -print
Sie verlassen die jsh-Shell wieder mit
jsh> exit
und erhalten darauf das Bereitzeichen der Bourne-Shell:
$
SIEHE AUCH
sh(1).
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98