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 >
Text File  |  1988-08-26  |  8KB  |  185 lines

  1. =====================================                         ================
  2. |  Die Command Line Syntax von OS9  |                         | August'88 LZ |
  3. =====================================                         ================
  4.  
  5. Hinweise zur Command Line Syntax von OS9
  6. ========================================
  7.  
  8. In letzer Zeit wurden  sehr  viele  Utilities  von  UNIX  auf  OS9
  9. portiert. Das hat bereits zu  einer  bedauerlichen  "Verwilderung"
  10. der Command Line Syntax gefuehrt. Andererseits sind die Regeln der
  11. Kommando-Syntax  in  OS9  bisher  meines  Wissens  noch   nirgends
  12. festgehalten; auch dieser Umstand fuehrte dazu, dass Programme mit
  13. (meist  nur  geringfuegig)  abweichender  Syntax  enstanden  sind.
  14. Deshalb moechte ich mit diesem Beitrag  einen  Anhaltspunkt  geben
  15. fuer alle, die Utilities fuer OS9 adaptieren oder neu schreiben.
  16.  
  17. Dass  ein  einheitliches  User-Interface   das   A   und   O   des
  18. Bedienungskomfortes sind, ist klar. Darum finde ich wichtig,  dass
  19. der von Microware vorgegene Standard weiterhin eingehalten wird.
  20.  
  21. Ein anderer wichtiger Punkt: OS9  ist  nicht  gleich  UNIX  !  Die
  22. Kommando-Syntax  von  UNIX   ist   einerseits   weniger   flexibel
  23. (Reihenfolge  der  Options)  und  andererseits  anfaelliger   fuer
  24. gefaehrliche Missgeschicke (z.B cp-Utility). Die  OS9/68k  Command
  25. Line Syntax ist eine Weiterentwicklung  der  UNIX-Syntax.  Einiges
  26. ist gleich oder aehnlich, es gibt jedoch Unterschiede, die  es  zu
  27. beachten gilt.
  28.  
  29.  
  30. Options und Normale Argumente
  31. -----------------------------
  32.  
  33. Die OS9 command  line  syntax  unterscheidet  grundsaetzlich  zwei
  34. Arten von Argumenten:
  35.  
  36. Options:   Alle Argumente, die mit einem Minuszeichen (hyphen) "-"
  37.            beginnen, sind Options. Wo eine  Option  innerhalb  der
  38.            Command-line steht, DARF KEINE ROLLE fuer die  Funktion
  39.            des  Programmes  SPIELEN,  d.h  die  Options  sind  NON
  40.            POSITIONAL (nicht positionsabhaengig).
  41.            "Optional" heisst soviel wie  "freigestellt";  d.h  die
  42.            Angabe von Options ist freiwillig.  Daraus  folgt  dass
  43.            JEDES Programm auch dann eine Funktion haben muss, wenn
  44.            KEINE Options angegeben werden. Die Options dienen  nur
  45.            dazu, die Funktion des Programms zu veraendern oder  zu
  46.            erweitern.
  47.  
  48.  
  49. Normale Argumente:  Alle anderen Argumente sind normale Parameter.
  50.            Oft sind es Filenamen;  es  koennen  aber  auch  andere
  51.            Informationen sein. Normale Argumente duerfen - muessen
  52.            aber nicht - positionsabhaengig (positional) sein. Auch
  53.            darf ein Programm die Arbeit verweigern,  wenn  zuwenig
  54.            oder zuviel Argumente angegeben wurden.
  55.  
  56.  
  57. Die Zusammensetzung einers Option-Argumentes
  58. --------------------------------------------
  59.  
  60. Jedes Option-Argument beginnt - wie  oben  erwaehnt  -  mit  einem
  61. Minuszeichen. Darauf  folgt  einer  oder  mehrere  Buchstaben  (in
  62. Ausnahmefaellen auch Sonderzeichen). Jeder dieser  Buchstaben  ist
  63. eine Option;  d.h  mehrere  Optionen  koennen  in  einem  einzigen
  64. Option-Argument  vorhanden  sein.  Die  untenstehende  Folge   von
  65. Optionen
  66.  
  67.            -x -r -f
  68.  
  69. sollte also bei JEDEM Programm auch als
  70.  
  71.            -xrf
  72.  
  73. geschrieben werden koennen.
  74.  
  75. Gewisse Programme (z.B attr) benoetigen Optionen, die  man  sowohl
  76. explizite ein- als auch ausschalten kann. Zum  Ausschalten  stellt
  77. man dem Option-Buchstaben ein "n" voran:
  78.  
  79.            -x   (x einschalten)
  80.            -nx  (x ausschalten)
  81.            -enrnwfng    (e ein, r aus, w aus, f ein, g aus)
  82.  
  83. Gewisse  Optionen  erfordern  die   Angabe   eines   zusaetzlichen
  84. Parameters (der ohne die betreffende Option nicht  noetig  waere).
  85. Hier liegt ein Hauptunterschied zwischen OS9  und  UNIX:  Bei  OS9
  86. muss unmittelbar nach dem Option-Buchstaben ein Gleichheitszeichen
  87. "=" folgen, welches wiederum unmittelbar  von  dem  entsprechenden
  88. Parameter gefolgt sein muss (keine Spaces dazwischen):
  89.  
  90.            -w=/h0/cmds
  91.            -w = /h0/cmds    FALSCH !!!! (Spaces dazwischen)
  92.  
  93. Wenn der Parameter AUF JEDEN FALL  eine  dezimale  Zahl  ist  oder
  94. zumindest IMMER mit einer solchen beginnt, dann - und NUR  DANN  -
  95. darf (MUSS ABER NICHT) das Gleichheitszeichen weggelassen werden:
  96.  
  97.            -b=700
  98.            -b700        (ist auch zulaessig)
  99.            -w/h0/cmds   (NICHT zulaessig !!! Keine Zahl !)
  100.  
  101. Hat eine Option einen Parameter, so muss sie die letzte Option  in
  102. dem betreffenden Option-Argument sein, d.h in
  103.  
  104.            -b700xr
  105.  
  106. werden "x" und "r" nicht mehr als Optionen erkannt.  Das  Programm
  107. kann  dies  als  Fehler  melden;  oft  werden  allerdings   solche
  108. ueberzaehligen Zeichen einfach ignoriert.
  109.  
  110. Eine Spezielle Option, die ALLE OS9-Programme kennen muessen,  ist
  111. "-?". Wenn diese Option irgendwo auf der Command line  erscheint,
  112. darf das Programm NICHTS ANDERES machen, als  einen  kurzen  Help-
  113. Text auszugeben. Der Help-Text sollte folgendes enthalten:
  114.  
  115.        -   Die Command line syntax der Programms.
  116.        -   Kurze Erklaerung der Funktion.
  117.        -   Kurze Erlaeuterung jeder moeglichen Option.
  118.        -   Weitere Hinweise nach Bedarf.
  119.  
  120. Der Help-Text sollte ausserdem auch dann  angezeigt  werden,  wenn
  121. ein Syntax-Fehler (fehlende Parameter etc.)  vorliegt,  oder  eine
  122. ungueltige Option angegeben wurde, und zwar VOR  der  Ausgabe  der
  123. Fehlermeldung selbst.
  124.  
  125.  
  126. Verarbeitung der Optionen
  127. -------------------------
  128.  
  129. Das folgende  Programm  (in  Pseudo-Pascal-Code)  zeigt,  wie  die
  130. Argument-Verarbeitung eines OS9-Utilities etwa aussehen koennte.
  131.  
  132.  
  133.    BEGIN (* OS9-Utility *)
  134.       (* Zuallererst Options ueberpruefen *)
  135.       FOR arg := 1 TO anzahl argumente DO
  136.       BEGIN
  137.          IF argument[arg] beginnt mit einem Minuszeichen THEN
  138.          BEGIN
  139.             (* Verarbeitung des Option-Arguments *)
  140.             FOR x := 2 TO Anzahl Zeichen im Argument DO
  141.             BEGIN
  142.                (* Verarbeitung des x-ten Zeichens *)
  143.  
  144.                CASE x-tes Zeichen des Arguments OF
  145.                  "?" : BEGIN
  146.                           Help-Text anzeigen
  147.                           Programm beenden
  148.                        END
  149.                  "x" : Flag fuer Option "x" setzen
  150.                  "y" : Flag fuer Option "y" setzen
  151.                  "w" : BEGIN
  152.                           (* Option mit Parameter *)
  153.                           IF (x+1)-tes Zeichen ist kein "=" THEN
  154.                           BEGIN
  155.                              Fehler anzeigen
  156.                              Programm beenden
  157.                           END
  158.                           Parameter fuer Option "w" :=
  159.                              alle Zeichen die auf das "=" folgen
  160.                           (* wichtig: *)
  161.                           Innerere FOR-Schleife verlassen und
  162.                           naechstes Argument bearbeiten.
  163.                        END
  164.                  ELSE  BEGIN
  165.                           (* Keine gueltige Option *)
  166.                           Help-Text anzeigen
  167.                           Fehler (unbekannte Option) anzeigen
  168.                           Programm beenden
  169.                        END
  170.                END (* x-tes Zeichen bearbeitet *)
  171.             END (* Alle optionen in diesem Argument verarbeitet *)
  172.          END (* Option-Argument verarbeitet *)
  173.       END (* Alle Argumente auf Optionen hin untersucht *)
  174.       (* Erst jetzt, nachdem die Optionen alle bekannt sind, darf mit *)
  175.       (* der Verarbeitung der anderen Argumente begonnen werdenn      *)
  176.  
  177.       ....
  178.  
  179.       Programmausfuehrung
  180.  
  181.       ....
  182.  
  183.    END (* OS9-Programm *)
  184.  
  185.