Terms-LogoTerms97801 Version 2.0 Online Handbuch

Inhalt Index Voriges Kapitel Vorige Seite Nächste Seite Nächstes Kapitel Kapitel: 1 2 3 4 5 6 7 8 9 10 Anhang


7.7 Terms97801-Funktionen von UNIX aus starten

7.7.1 Programme auf dem PC von UNIX aus starten

Mit der Sequenz <ESC>XN, gefolgt von einem Programmnamen und <ESC>\, wird das angegebene Programm gestartet. Mit <ESC>XI geschieht dies als iconisiertes, mit <ESC>XJ als maximiertes und mit <ESC>XH als unsichtbares Programm. Dies gilt jedoch nur für Windows-Programme; für DOS-Programme gelten die Angaben der zugehörigen PIF-Datei.

Beispiel: echo "\033XNnotepad\033\\"

Im Lieferumfang befindet sich das Shell-Skript winexec. Dieses Skript erspart die direkte Angabe der Escape-Sequenz und läßt sich wie ein UNIX-Befehl aufrufen...

Beispiel: winexec "notepad c:/autoexec.bat"

Werden Windows-Programme aus einem Shell-Skript heraus gestartet, so kann die Beendigung des Programms zwingend notwendig sein, bevor der nächste Befehl des Shell-Skripts ausgeführt wird. Dies ist z.B. der Fall, wenn das Windows-Programm eine Datei erzeugt, die anschließend vom Shell-Skript abgeholt wird.

Für solche Fälle kann ein Programmstart mit Warten auf Beendigung ausgeführt werden. Die entsprechenden Escape-Sequenzen lauten analog: <ESC>Xn, <ESC>Xi, <ESC>Xj und <ESC>Xh. Terms97801 startet dann das Programm und sendet nach der Beendigung den String executed gefolgt vom Exitcode des Programms an den Host. Das Warten im Shell-Skript geschieht mittels einer read-Anweisung.

Beispiel:

echo \033Xnnotepad\033\\
read RESULT

7.7.2 Tastaturbelegung und Tastaturschablonen durch UNIX laden

Mit der Sequenz <ESC>XK, gefolgt von einem Dateinamen einer Tastaturbelegung (*.key) und <ESC>\, wird die angegebene Tastaturbelegung geladen.

Mit einer entsprechenden Sequenz in der .profile wird an jedem PC-Arbeitsplatz immer die persönliche Tastaturbelegung geladen. Hierzu muß die persönliche Tastaturbelegung an jedem Arbeitsplatz verfügbar sein. Dies kann entweder durch lokal gehaltene Kopien oder durch eine global verfügbare Datei im Netz erreicht werden.

Beispiel: echo "\033XKc:/terms/otto.key\033\\"

Falls kein Netz vorhanden ist, und die persönliche Tastaturtabelle nicht überall verfügbar ist, kann die Tastaturbelegung auch als UNIX-Datei gehalten und mit dem Terms97801-Filetransfer vorher auf den PC übertragen werden.

Mit der Sequenz <ESC>XT, gefolgt von dem Namen einer Tastaturschablone und <ESC>\ wird diese Tastaturschablone geladen. Falls die Schablone noch nicht angezeigt wurde, wird sie durch obige Escape-Sequenz aktiviert. Mit einem leeren Namen läßt sich die Schablone wieder ausschalten.

Werden verschiedene UNIX-Anwendungen von den Anwendern durch ein Menüsystem ausgewählt, kann dieses leicht auf ein automatisches Laden der passenden Tastaturschablone erweitert werden.

Mit dem Laden einer Tastaturschablone können weitere Einstellungen für Terms97801 verbunden werden. Befindet sich in der Ini-Datei eine Sektion mit dem gleichen Namen wie die Tastaturschablone (ohne Pfad und Erweiterung), so werden aus dieser Sektion die Einstellungen für die Zwischenablage, die Attributfarben und die Maussteuerung eingelesen. Näheres findet sich im nächsten Abschnitt und in Aktivieren anwendungsspezifischer Einstellungen durch Tastaturschablonen.

Im Lieferumfang befindet sich das Shell-Skript lt (load template) und lk (load keyboard). Diese Skripte ersparen die direkte Angabe der Escape-Sequenzen und lassen sich wie ein UNIX-Befehl aufrufen.

Beispiel:

lk c:/terms/otto.key
lt c:/terms/tabellen/hit50.sbl

7.7.3 Terms97801 Ini-Sektionen durch UNIX aktivieren

Die Einstellungen, die durch bestimmte Ini-Sektionen beschrieben werden, können durch UNIX aktiviert werden. Hierzu dienen folgende Escape-Sequenzen:

<ESC>XA<Ini-Sektion><ESC>\ für Attribute
<ESC>XC<Ini-Sektion><ESC>\ für Clipboard
<ESC>XM<Ini-Sektion><ESC>\ für Maussteuerung
<ESC>XB<Ini-Sektion><ESC>\ für Cursor
<ESC>XU<Ini-Sektion><ESC>\ für Filetransfer
<ESC>XX<Ini-Sektion><ESC>\ für Connect

Es wird nach der angegebenen Ini-Sektion gesucht und die Einträge werden so eingelesen, als ob sie in der normal benannten Ini-Sektion stünden.
Wird keine Ini-Sektion angegeben, so wird die normal benannte Ini-Sektion eingelesen. Wird eine nicht existierende Ini-Sektion angegeben, so werden die Default-Werte wie beim ersten Start von Terms97801 aktiviert.
Passende Ini-Sektionen werden am einfachsten dadurch erzeugt, daß eine vorhandene Ini-Sektion dupliziert und umbenannt wird.

HINWEIS:
Die ersten drei Escape-Sequenzen werden durch das Laden einer Tastaturschablone aktiviert. Dabei gilt: Name der Schablone ohne Pfad und Suffix wird als Name der Ini-Sektion verwendet.

Beispiel: Eigene Farben durch Escape-Sequenz einstellen

  1. Schritt: Die gewünschten Farben werden werden über Einstellungen..Bildschirm nach den eigenen Wünschen eingestellt und gespeichert.
  2. Schritt: Über System..Ini-Datei bearbeiten wird die Ini-Datei in den Editor geladen. Die Sektion [Attributes] wird in die Zwischenablage kopiert und nochmals eingefügt. Die doppelte Sektion [Attributes] wird in [MeineFarben] umbenannt.
  3. Schritt: Die Farben werden wieder auf Normalwerte zurückgestellt und gespeichert.
  4. Schritt: Über echo "\033XAMeineFarben\033\\" lassen sich die eigenen Farben aktivieren. Mit echo "\033XA \033\\" werden wieder die Normalwerte eingestellt.

Mit der Cursor-Sektion kann der Cursor und die Fontgröße von UNIX aus eingestellt werden.

Mit der Filetransfer-Sektion kann nicht nur die Carridge-Return-Linefeed-Ersetzung gesteuert werden, sondern auch der Drucker eingestellt werden.
Mit der Connect-Sektion können Optionen wie 'Trennen nur durch Host' oder 'Schließe bei Verbindungsende' von UNIX aus aktiviert werden. Auch die Titelzeile kann so gesetzt werden.

Die obigen Escape-Funktionen gibt es auch mit Kleinbuchstaben. In diesem Fall wird keine Angabe der Ini-Sektion benötigt, da diese Funktionen die zuvor eingestellten Werte wieder aktivieren. Dies kann nötig werden, wenn mit obigen Escape-Sequenzen Einstellungen vorgenommen wurden und durch z.B. durch einen Benutzerabbruch die alten Werte wieder hergestellt werden sollen.

<ESC>Xt<ESC>\ für letzte Tastaturschablone
<ESC>Xa<ESC>\ für letzte Attribute
<ESC>Xc<ESC>\ für letzte Clipboard-Einstellung
<ESC>Xm<ESC>\ für letzte Maussteuerung
<ESC>Xb<ESC>\ für letzte Cursoreinstellung

7.7.4 Windows-Ein- und Ausgabe-Dialoge für UNIX

Um von UNIX aus dem Benutzer etwas mitzuteilen, wird die Nachricht (mit dem echo-Befehl) auf den Bildschirm geschrieben. Mit Terms97801 ist es möglich, Nachrichten als Windows-Dialog mit OK-Knopf anzeigen zu lassen.
Ein Grund, diese Terms97801-Funktion einzusetzen, ist die größere Auffälligkeit gegenüber der Ausgabe auf dem UNIX-Bildschirm. So kann z.B. das Eintreffen elektronischer Post über einen Windows-Dialog gemeldet werden.
Ein anderer Grund, diese Funktion einzusetzen, ist z.B. die Abfrage, für welchen Druckertyp der Ausdruck aufbereitet werden soll. Da eine solche Abfrage aus einer laufenden Anwendung geschieht, würde der 'normale UNIX-Dialog' den Bildschirminhalt der laufenden Anwendung zerstören.

Mit der Sequenz <ESC>XO, gefolgt einem Text und <ESC>\ wird dieser Text als Windows-Nachricht mit OK-Knopf angezeigt. Nach Betätigen des OK-Knopfs wird ein 'newline' an UNIX gesendet, so daß in einem Shell-Skript mit einem read auf die Bestätigung gewartet werden kann.

Zum Beipiel:

echo "\033XOSie haben Post\033\\"; read


Abb. 29: Windows-OK-Dialog mit Terms97801-Escape-Sequenz

Mit der Sequenz <ESC>XY, gefolgt von einem Text und <ESC>\ wird dieser Text als Windows-Dialog mit Ja/Nein-Auswahl angezeigt. Nach dem Drücken einer der beiden Knöpfe werden Y bzw. N und 'newline' an UNIX gesendet.

echo "\033XYJa oder Nein\033\\"; read ANSWER


Abb. 30: Windows-Ja/Nein-Dialog mit Terms97801-Escape-Sequenz

Mit der Sequenz <ESC>XE, gefolgt von einem Text und <ESC>\ wird dieser Text als Beschriftung eines Windows-Eingabe-Dialogs angezeigt. Die Eingabe wird nach Bestätigung mit dem OK-Knopf an UNIX gesendet. Befindet sich im Text ein Strichpunkt, so wird alles, was dem Strichpunkt folgt, als Vorbelegung für das Eingabefeld verwendet.

Der Baustein für ein Shell-Skript kann z.B. so aussehen:

stty -echo
echo "\033XE\c"
echo "Bitte geben Sie den Monat ein;Januar\033\\"
read ANSWER
echo $ANSWER
stty echo

Zur Auswahl aus mehreren Möglichkeiten kann ein Dialog mit einer Radioschalter- oder Kästchenschalter-Auswahl angezeigt werden.

Syntax für Kästchenschalter-Auswahl:
<ESC>XQ<Frage>;<An/Aus><Schaltertext1>;......;<ESC>\

Syntax für Radioschalter-Auswahl:
<ESC>XR<Frage>;<An/Aus><Schaltertext1>;......;<ESC>\

Es sind maximal 16 Schalter zulässig; der String darf maximal aus 256 Zeichen bestehen. Die Auswahl des Benutzers wird mit durch 'blank' getrennten Zahlen zurückgemeldet. Beim Abbruch wird 0 an den Host gesandt.

Beispiele:

echo "\033XQWas möchten Sie essen?; \Suppe;xHauptgericht;xNachtisch;\033\\"


Abb. 31: Windows-Kästchen-Auswahl mit Terms97801-Escape-Sequenz

echo "\033XRWie geht's?; schlecht; mittel;xgut;\033\\"


Abb. 32: Windows-Radioschalter-Auswahl mit Terms97801-Escape-Sequenz

Die Radio- und Kästchenauswahl ist auf maximal 16 Einträge beschränkt. Sollen mehr Auswahlmöglichkeiten angeboten werden, so kann eine Listbox-Auswahl verwendet werden. Mit der Sequenz <ESC>Xl<Text>;<listeneintrag1>;....<ESC>\, wird ein Listbox-Dialogs angezeigt. Die ausgewählte Zeile wird nach Bestätigung mit dem OK-Knopf an UNIX gesendet.

Mit <ESC>Xq<Text>;<listeneintrag1>;....<ESC>\ wird ebenfalls eine Listbox angezeigt. Aus dieser Listbox können mehrere Einträge ausgewählt werden. Die Auswahl wird zeilenweise zurückgegeben. Die letzte Zeile besteht aus der Zeichenfolge EOF.

Mit der Listenauswahl ist es möglich eine UNIX-Datei-Auswahl im Windows-Stil zu erzeugen.

Der Baustein für ein Shell-Skript kann z.B. so aussehen:

stty -echo
while true
do
# get the current directory
TEXT=`pwd`
# show windows list box
echo "\033XlVerzeichnis:$TEXT;../;\c"
ls -lcpb | tail +2 | awk '{ printf( "%-14s %7d %2d.%s %s;", $9, $5, $6, $7, $8) }'
echo '\033\\\c'
read LINE
LINE=`echo $LINE | cut -d" " -f1`
case $LINE in
../) cd ..;;
*/) cd $LINE;;
*) stty echo;
echo $LINE
exit;;
esac
done


Abb. 33: Windows-Listen-Auswahl mit Terms97801-Escape-Sequenz

Als ausführlicheres Beispiel für die Benutzerdialoge befindet sich im Lieferumfang das Skript tour.

7.7.5 Drucker und Dateien erfragen

Unter Windows, ganz besonders bei PC-Netzwerken, können mehrere Drucker installiert sein. Ein UNIX-Ausdruck auf dem PC erfordert die Druck-Aufbereitung des Dokuments auf der UNIX-Seite. Dies setzt die Kenntnis des Druckers am PC voraus. Soll ein UNIX-Ausdruck auf verschiedenen Druckern möglich sein, so muß der/die Anwender/in nach dem gewünschten Drucker gefragt werden.
Mit <ESC>XP<ESC>\ wird der Dialog zur Druckerauswahl angezeigt und der ausgewählte Treibername zurückgegeben. Dieser Dialog kann dazu benutzt werden, einen Drucker zu erfragen, bevor die Druckaufbereitung durch UNIX gestartet wird.

Auch die Überprüfung, ob eine bestimmte Datei oder ein bestimmtes Verzeichnis vorhanden ist, kann gelegentlich nützlich sein.
Mit der Escape-Sequenz <ESC>XZ<Dateiname><ESC>\ wird versucht, die angegebene Datei zu öffnen. Gelingt dies, so wird 'true', gefolgt von '0' oder '1' an den Host gesandt. 0 bedeutet, daß es sich um einen wechselbaren Datenträger handelt. 1 bedeutet, daß es sich um eine Festplatte handelt.

Kann die Datei nicht geöffnet werden, wird 'false' gefolgt vom Fehlercode an den Host gesandt. Als Fehlercode wird der Wert 2 für "Datei existiert nicht" oder 3 "Pfad existiert nicht" gesendet. Die Existenz eines Verzeichnisses läßt sich durch die Frage nach einer Datei in diesem Verzeichnis realisieren. Wird 'false' mit dem Fehlercode 3 zurückgegeben, so existiert das Verzeichnis nicht. Als Beispiel hierfür befinden sich im Lieferumfang die Skripte testfile und testdir.

Anmerkung:
Der Fehlercode entspricht dem DOS-Fehler. Für WindowsNT 4.0 wird aus Kompatibilitätsgründen ebenfalls der DOS-Fehler zurückgegeben, aber leider nicht genauso wie unter DOS/Windows95. Das Skript testdir funktioniert darum nicht unter WindowsNT 4.0.

Für die Interaktion mit dem/r Benutzer/in bei Dateiübertragungen sind Funktionen zur Auswahl einer Datei und eines Verzeichnisses vorhanden.

Mit der Escape-Sequenz <ESC>XF<Vorgabe-Dateiname><ESC>\ wird ein Dateiauswahl-Dialog und mit <ESC>XD<Vorgabe-Verzeichnis><ESC>\ wird ein Verzeichnisauswahl-Dialog angezeigt. Der ausgewählte Dateiname bzw. das ausgewählte Verzeichnis wird an den Host gesandt. Der Pfad wird in UNIX-Notation, also mit / statt \ zurückgegeben. Im Fehlerfall wird 'error', beim Abbruch durch den Anwender 'canceled' gesandt.

Beispiel:

$ echo "\033XDC:/DOS\033\\"


Abb. 34: Windows-Verzeichnis-Auswahl mit Terms97801-Escape-Sequenz

Das Beispiel tft verwendet diese Escape-Sequenz zur Auswahl eines Dateinamens. Das Beispiel tounix verwendet die Escape-Sequenz zur Auswahl eines Verzeichnisses.

Mit <ESC>XG<Pfad/name.suffix><ESC>\ wird ebenfalls ein Dateiauswahl-Dialog angeboten. Im Unterschied zur Funktion von <ESC>XF können in dem Dialog mehrere Dateien ausgewählt werden. Die Übergabe der ausgewählten Dateien erfolgt zeilenweise; die erste Zeile gibt den Pfad an, es folgen die Dateien; die letzte Zeile besteht aus der Zeichenkette EOF.
Im Lieferumfang befindet sich das Beispiel selfiles .

Mit <ESC>XL<Pfad><ESC>\ wird der Inhalt des angegebenen Verzeichnisses ausgegeben. Die Übergabe erfolgt zeilenweise; die letzte Zeile besteht aus der Zeichenkette EOF.
Im Lieferumfang befindet sich das Beispiel getdir .

7.7.6 Die Terms97801 Anzeige steuern

Mit <ESC>XW<Buchstabe><ESC>\ kann die Art der Anzeige von Terms97801 verändert werden. Als <Buchstabe> können folgende Werte eingesetzt werden:

H für verstecken,
I für iconisieren,
M für maximieren und
S für wiederherstellen.

7.7.7 Die Version und Environment abfragen

Die Abfragen für DOS- und Windows-Version und das DOS-Environment sind sehr nützlich, wenn die PCs verschieden konfiguriert sind, aber ein Shell-Skript für die verschiedenen PC-Konfigurationen benutzt werden soll. Über die Environment-Abfrage läßt sich das temporäre Windows-Verzeichnis erfragen. Auch Pfade zu Programmen, die von UNIX aus gestartet werden sollen, können über eine DOS-Environment-Variable hinterlegt werden.

Mit <ESC>XV<Buchstabe><ESC>\ können DOS- und Windows-Version und das DOS-Environment abgefragt werden.
Als <Buchstabe> können folgende Werte eingesetzt werden:

D für DOS-Version; liefert 0 0 unter WindowsNT 4.0 und 7 0 unter Windows95
W für Windows-Version,
E für DOS-Environment,
F für Windows-Flags; liefert immer 0 0 0 0; nur aus Kompatibilität noch vorhanden; und
X für erweiterte Versionsinformation; liefert Windows-Typ, Major-Version, Minor-Version, Build

Im Lieferumfang befinden sich die Beispiel-Skripte getver und getenv.

Anmerkung:
Unter WindowsNT wird statt des DOS-Environments das NT-Enviroment an UNIX gesendet.

Beispiel: Ausgabe von getver (unter WindowsNT 4.0:)

$ getver
Ihre DOS-Version: 0 0
Ihre Windows-Version: WinNT Build: 1381
Major: 4 Minor: 0
$


Terms-LogoTerms97801 Version 2.0 Online Handbuch

Inhalt Index Voriges Kapitel Vorige Seite Nächste Seite Nächstes Kapitel Kapitel: 1 2 3 4 5 6 7 8 9 10 Anhang