home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
EFFO
/
forum7.lzh
/
INFO
/
cmd_syntax
next >
Wrap
Text File
|
1988-08-26
|
8KB
|
185 lines
===================================== ================
| Die Command Line Syntax von OS9 | | August'88 LZ |
===================================== ================
Hinweise zur Command Line Syntax von OS9
========================================
In letzer Zeit wurden sehr viele Utilities von UNIX auf OS9
portiert. Das hat bereits zu einer bedauerlichen "Verwilderung"
der Command Line Syntax gefuehrt. Andererseits sind die Regeln der
Kommando-Syntax in OS9 bisher meines Wissens noch nirgends
festgehalten; auch dieser Umstand fuehrte dazu, dass Programme mit
(meist nur geringfuegig) abweichender Syntax enstanden sind.
Deshalb moechte ich mit diesem Beitrag einen Anhaltspunkt geben
fuer alle, die Utilities fuer OS9 adaptieren oder neu schreiben.
Dass ein einheitliches User-Interface das A und O des
Bedienungskomfortes sind, ist klar. Darum finde ich wichtig, dass
der von Microware vorgegene Standard weiterhin eingehalten wird.
Ein anderer wichtiger Punkt: OS9 ist nicht gleich UNIX ! Die
Kommando-Syntax von UNIX ist einerseits weniger flexibel
(Reihenfolge der Options) und andererseits anfaelliger fuer
gefaehrliche Missgeschicke (z.B cp-Utility). Die OS9/68k Command
Line Syntax ist eine Weiterentwicklung der UNIX-Syntax. Einiges
ist gleich oder aehnlich, es gibt jedoch Unterschiede, die es zu
beachten gilt.
Options und Normale Argumente
-----------------------------
Die OS9 command line syntax unterscheidet grundsaetzlich zwei
Arten von Argumenten:
Options: Alle Argumente, die mit einem Minuszeichen (hyphen) "-"
beginnen, sind Options. Wo eine Option innerhalb der
Command-line steht, DARF KEINE ROLLE fuer die Funktion
des Programmes SPIELEN, d.h die Options sind NON
POSITIONAL (nicht positionsabhaengig).
"Optional" heisst soviel wie "freigestellt"; d.h die
Angabe von Options ist freiwillig. Daraus folgt dass
JEDES Programm auch dann eine Funktion haben muss, wenn
KEINE Options angegeben werden. Die Options dienen nur
dazu, die Funktion des Programms zu veraendern oder zu
erweitern.
Normale Argumente: Alle anderen Argumente sind normale Parameter.
Oft sind es Filenamen; es koennen aber auch andere
Informationen sein. Normale Argumente duerfen - muessen
aber nicht - positionsabhaengig (positional) sein. Auch
darf ein Programm die Arbeit verweigern, wenn zuwenig
oder zuviel Argumente angegeben wurden.
Die Zusammensetzung einers Option-Argumentes
--------------------------------------------
Jedes Option-Argument beginnt - wie oben erwaehnt - mit einem
Minuszeichen. Darauf folgt einer oder mehrere Buchstaben (in
Ausnahmefaellen auch Sonderzeichen). Jeder dieser Buchstaben ist
eine Option; d.h mehrere Optionen koennen in einem einzigen
Option-Argument vorhanden sein. Die untenstehende Folge von
Optionen
-x -r -f
sollte also bei JEDEM Programm auch als
-xrf
geschrieben werden koennen.
Gewisse Programme (z.B attr) benoetigen Optionen, die man sowohl
explizite ein- als auch ausschalten kann. Zum Ausschalten stellt
man dem Option-Buchstaben ein "n" voran:
-x (x einschalten)
-nx (x ausschalten)
-enrnwfng (e ein, r aus, w aus, f ein, g aus)
Gewisse Optionen erfordern die Angabe eines zusaetzlichen
Parameters (der ohne die betreffende Option nicht noetig waere).
Hier liegt ein Hauptunterschied zwischen OS9 und UNIX: Bei OS9
muss unmittelbar nach dem Option-Buchstaben ein Gleichheitszeichen
"=" folgen, welches wiederum unmittelbar von dem entsprechenden
Parameter gefolgt sein muss (keine Spaces dazwischen):
-w=/h0/cmds
-w = /h0/cmds FALSCH !!!! (Spaces dazwischen)
Wenn der Parameter AUF JEDEN FALL eine dezimale Zahl ist oder
zumindest IMMER mit einer solchen beginnt, dann - und NUR DANN -
darf (MUSS ABER NICHT) das Gleichheitszeichen weggelassen werden:
-b=700
-b700 (ist auch zulaessig)
-w/h0/cmds (NICHT zulaessig !!! Keine Zahl !)
Hat eine Option einen Parameter, so muss sie die letzte Option in
dem betreffenden Option-Argument sein, d.h in
-b700xr
werden "x" und "r" nicht mehr als Optionen erkannt. Das Programm
kann dies als Fehler melden; oft werden allerdings solche
ueberzaehligen Zeichen einfach ignoriert.
Eine Spezielle Option, die ALLE OS9-Programme kennen muessen, ist
"-?". Wenn diese Option irgendwo auf der Command line erscheint,
darf das Programm NICHTS ANDERES machen, als einen kurzen Help-
Text auszugeben. Der Help-Text sollte folgendes enthalten:
- Die Command line syntax der Programms.
- Kurze Erklaerung der Funktion.
- Kurze Erlaeuterung jeder moeglichen Option.
- Weitere Hinweise nach Bedarf.
Der Help-Text sollte ausserdem auch dann angezeigt werden, wenn
ein Syntax-Fehler (fehlende Parameter etc.) vorliegt, oder eine
ungueltige Option angegeben wurde, und zwar VOR der Ausgabe der
Fehlermeldung selbst.
Verarbeitung der Optionen
-------------------------
Das folgende Programm (in Pseudo-Pascal-Code) zeigt, wie die
Argument-Verarbeitung eines OS9-Utilities etwa aussehen koennte.
BEGIN (* OS9-Utility *)
(* Zuallererst Options ueberpruefen *)
FOR arg := 1 TO anzahl argumente DO
BEGIN
IF argument[arg] beginnt mit einem Minuszeichen THEN
BEGIN
(* Verarbeitung des Option-Arguments *)
FOR x := 2 TO Anzahl Zeichen im Argument DO
BEGIN
(* Verarbeitung des x-ten Zeichens *)
CASE x-tes Zeichen des Arguments OF
"?" : BEGIN
Help-Text anzeigen
Programm beenden
END
"x" : Flag fuer Option "x" setzen
"y" : Flag fuer Option "y" setzen
"w" : BEGIN
(* Option mit Parameter *)
IF (x+1)-tes Zeichen ist kein "=" THEN
BEGIN
Fehler anzeigen
Programm beenden
END
Parameter fuer Option "w" :=
alle Zeichen die auf das "=" folgen
(* wichtig: *)
Innerere FOR-Schleife verlassen und
naechstes Argument bearbeiten.
END
ELSE BEGIN
(* Keine gueltige Option *)
Help-Text anzeigen
Fehler (unbekannte Option) anzeigen
Programm beenden
END
END (* x-tes Zeichen bearbeitet *)
END (* Alle optionen in diesem Argument verarbeitet *)
END (* Option-Argument verarbeitet *)
END (* Alle Argumente auf Optionen hin untersucht *)
(* Erst jetzt, nachdem die Optionen alle bekannt sind, darf mit *)
(* der Verarbeitung der anderen Argumente begonnen werdenn *)
....
Programmausfuehrung
....
END (* OS9-Programm *)