parameter nach dem unixstandart auswerten?

N

Nano

Foren As
so lautet ein kleiner satz in einer großen aufgabe, allerdings ist mir nicht klar was der gute mann damit meint, was ist der unixstandart bei schaltern ?
der syntax ist ja klar..
 
Ein '-' gefolgt von einem Buchstaben wie z.B. 'v' ist die Kurzschreibform, ein '--' gefolgt von etwas wie 'verbose' ist die Langschreibform.

Viele Programme kannst du mit obigem Beispiel-Schalter aufrufen (verbose == langatmig, sprich viel Ausgabe).

Also z.B. kannst du sowas schreiben wie

Code:
./mein_tolles_programm -v

oder halt in der Langvariante mit

Code:
./mein_tolles_programm --verbose

Logischerweise muss das Programm diese Schalter auch implementieren, 'irgendwas' kannst du natürlich nicht hinschreiben.
 
das ist mir soweit klar, das programm hate fix optionale parameter die ich beim starten entsprechend abfrage/teste... ich dachte vielleicht sei irgendwas zu besonderes zu beachten da der satz sonst keinen sinn macht
aber danke für die antwort
 
Einen UNIX-Standard gibt es ziemlich sicher nicht, da es auch kein Standard-UNIX gibt. Vielleicht meint der Aufgabensteller POSIX-Standard. Das ist das, was supersucker beschrieben hat, naemlich dass nach einem Bindestrich auch nur ein Zeichen kommt, welches die Option spezifiziert.

Es gibt noch viele andere Wege, Optionen zu uebergeben. So benutzt 'dd' gar keine Bindestriche sondern die Methode 'Schluessel=Wert' - siehe "man dd". Das soll wohl durch die Aufgabenstellung ausgeschlossen werden.
 
weder ps,tar noch dd brauchen Bindestriche für Optionen. Bei ps produzieren die sogar eine Fehlermeldung.
Code:
:~$ ps -aux
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
..................
Wohingegen:
Code:
:~$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2100   692 ?        Ss   Mar10   0:02 init [2]
root         2  0.0  0.0      0     0 ?        S<   Mar10   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S<   Mar10   0:01 [migration/0]
......
sauber läuft.
 
weder ps,tar noch dd brauchen Bindestriche für Optionen. ...
Falls Dein Beitrag eine Kritik sein soll, verstehe ich nicht, was Du aussagen moechtest. Nur, weil diese Programme Optionen ohne Bindestriche akzeptieren, heisst das doch nicht, dass sie dem POSIX-Standard genuegen. Oder fuehle ich mich zu Unrecht in meiner Ehre verletzt ;-)
 
Soweit ich weiss gibt es verschiedene "Unix-Standards" bei der Parameterübergabe an Programmen. Einmal den POSIX-Weg mit '-x' und '--xxx' und den SysV-Weg mit '-x', '--xxx' und 'x'. ps, tar und dd halten sich jedenfalls mit Sicherheit an den SysV-Standard.
 
Zuletzt bearbeitet:
a) Es heißt Standard und nicht Standart. Gerade bei diesen Standardrechtschreibfehlern kann ich nicht anders als darauf hinzuweisen.

b) Probiert mal ps -ef ... (GNU ps zumindest, klar Unix ist das nicht. Auf den richtigen *nix geht das auch nicht, oder?)

c) Selten dämliche Aufgabenstellung :-) Standard ist meiner Meinung nach nicht gerade die beste Wortwahl dafür.
 
ps ist aber auch ein ziemlicher Sonderfall was "Parameter-Standards" angeht.
@ps -aux:
Steht gleich am Anfang der manpage:
Code:
       This version of ps accepts several kinds of options:
       1   UNIX options, which may be grouped and must be preceded by a dash.
       2   BSD options, which may be grouped and must not be used with a dash.
       3   GNU long options, which are preceded by two dashes.
[...]
       Note that "ps -aux" is distinct from "ps aux". The POSIX and UNIX standards require that "ps -aux"
       print all processes owned by a user named "x", as well as printing all processes that would be selected
       by the -a option. If the user named "x" does not exist, this ps may interpret the command as "ps aux"
       instead and print a warning. This behavior is intended to aid in transitioning old scripts and habits.
       It is fragile, subject to change, and thus should not be relied upon.
Dem ersten Abschnitt nach wären "Standard Unix" Parameter wohl alle der Art "-a -b" "-ab" und dergleichen.
Furthermore:
Code:
STANDARDS
       This ps conforms to:

       1   Version 2 of the Single Unix Specification
       2   The Open Group Technical Standard Base Specifications, Issue 6
       3   IEEE Std 1003.1, 2004 Edition
       4   X/Open System Interfaces Extension [UP XSI]
       5   ISO/IEC 9945:2003

Aber ich find die Aufgabe nicht schlecht. Mal ein getopts.h zu schreiben kann sicherlich nicht schaden.

edit: vonwegen getopts.h. Wir sind ja in shell-Skripte.
 
Zuletzt bearbeitet:

Ähnliche Themen

Application Manager (m/w) - im Team Operations Development Hosting

Bootloader nach update weg

FreeBSD oder Linux?

Festplattenrettung mit ddrescue

Afänger braucht Hilfe - /temp ist voll, kde geht nicht, wie weiter ??

Zurück
Oben