Jag' mich einer zum Teufel, falls es diese frage schon 1000mal gab. Es geht mir um das Format der Übergabeparameter bei den Befehlen. Ich tippe z.B. ls -l Da wird das "l" mit einem Minus(-) davor getippt. Ich tippe apt install Hier gibt es kein "Vorzeichen". Ich tippe apt install --reinstall und da gibt es sogar zwei negative Vorzeichen. Folgt diese "Vorzeichen"-Vergabe einem Schema?
Bevor mich jemand zum Teufel jagt - ein Link zum Nachlesen tut's auch
Übergabe-Parameter in der Konsole
Re: Übergabe-Parameter in der Konsole
So ganz einheitlich ist es nicht, aber meistens ist so:
- »--so-und-so« und »--dies=das«
Langfassung einer Option - »-s« und »-d das«
Kurzfassung einer Option - »xyz«
Bei Parametern ohne Minuszeichen handelt es sich meistens um einen Befehl. Bei ls gibt es sowas also auch gar nicht, weil ls ohnehin nur einen Befehl, nämlich das Auflisten von Dateien bietet, aber apt kann viele unterschiedliche Dinge, zB »apt moo«
Re: Übergabe-Parameter in der Konsole
Die Parameter sind meist recht einheitlich. Hilfe bietet "apt -h", "apt --help" oder "man apt".
Alternativ Quellcode lesen. Z.B. https://packages.debian.org/source/jessie/apt
Alternativ Quellcode lesen. Z.B. https://packages.debian.org/source/jessie/apt
Re: Übergabe-Parameter in der Konsole
Das erste Wort bzw. Zeichenfolge ist das Programm/der Befehl, die nachfolgenden heißen Argumente.
Argumente mit "-" bzw. "--" davor werden Optionen genannt, die ohne (manchmal) Parameter.
Aber wie schon erwähnt so richtig einheitlich ist das alles nicht.
https://www.gnu.org/software/libc/manua ... yntax.html
Argumente mit "-" bzw. "--" davor werden Optionen genannt, die ohne (manchmal) Parameter.
Aber wie schon erwähnt so richtig einheitlich ist das alles nicht.
https://www.gnu.org/software/libc/manua ... yntax.html
Re: Übergabe-Parameter in der Konsole
Diese ``Befehle'', genauer ``Arbeitsmodi'' eines Programms, sind etwas eher Sonderbares in Unix. Es gibt sie ueberall dort, wo ein ``Sammelbefehl'' mehrere Aufgaben uebernehmen soll (um den Namespace nicht zu fluten). Entweder ist das dann ein Wrapper, der selbst dann je nach Modus ein anderes Programm aufruft (der richtige Weg), oder der Sammelbefehl implementiert all diese Funktionen (was schlechter Stil im Sinne der Unix Philosophie ist). Beispiele fuer solche Sammelbefehle sind neben apt-get die ganzen Versionskontrollsysteme. Bei mdadm werden die Modi mit normalen Switches eingeleitet, das ist strukturell gleich, bloss syntaktisch anders. Sendmail ist auch so ein Fall. Dort wird der Modus mit `-b...' eingeleitet (mnemonic ``become ...'') ... ausser dem Modus `-Mrm' und dem Modus, der mit `-q' gestartet wird (der aber wiederum etwas anderes ist als wenn man `-q...' angibt). (Das sendmail-Kommandozeileninterface ist eines der schlimmsten ... gleich dahinter folgt aber schon mdadm.)smutbert hat geschrieben:tn
[*] »xyz«
Bei Parametern ohne Minuszeichen handelt es sich meistens um einen Befehl. Bei ls gibt es sowas also auch gar nicht, weil ls ohnehin nur einen Befehl, nämlich das Auflisten von Dateien bietet, aber apt kann viele unterschiedliche Dinge, zB »apt moo«[/list]
Syntaktisch ist ein Programmentwickler frei in der Wahl der Argumente. Es ist lediglich eine Konvention, dass Optionen mit einem Minus beginnen. Ich denke, dass die Versionskontrollsysteme die Befehlsargumente populaer gemacht haben ... nun, wenigstens sind dort Modi und Optionen klar getrennt ...
Falls du ein standard Unix-Programm mit richtig unkonventioneller Argumentensyntax suchst, dann schau dir dd(1) an.
Use ed once in a while!
Re: Übergabe-Parameter in der Konsole
Vielen Dank für die Aufklärung.
Ja, es sind Argumente (und weniger Parameter), die z.B. an die main() übergeben werden und mittels argc und *argv[] verwaltet werden. Wie das programmiertechnisch geht, weiß ich im Prinzip, nur nutze ich das so gut wie nie. Ich dachte wirklich, dass die "Vorzeichen"-Geschichte einem Schema folgt, zumal manche man-pages verraten, das "-" die Kurz- und "--" die Langforn eines Argumentes ist.
@Meillo, die man-page von dd lässt tatsächlich Sonderbares erkennen, nur kannte ich dd bis jetzt noch nicht.
Ja, es sind Argumente (und weniger Parameter), die z.B. an die main() übergeben werden und mittels argc und *argv[] verwaltet werden. Wie das programmiertechnisch geht, weiß ich im Prinzip, nur nutze ich das so gut wie nie. Ich dachte wirklich, dass die "Vorzeichen"-Geschichte einem Schema folgt, zumal manche man-pages verraten, das "-" die Kurz- und "--" die Langforn eines Argumentes ist.
@Meillo, die man-page von dd lässt tatsächlich Sonderbares erkennen, nur kannte ich dd bis jetzt noch nicht.
- Livingston
- Beiträge: 1816
- Registriert: 04.02.2007 22:52:25
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: 127.0.0.1
Re: Übergabe-Parameter in der Konsole
Im Großen und Ganzen implementieren die meisten Programme Optionen "-" und "--" durchaus sauber. Seit 2001 sind sie POSIX-standardisiert.Das entnehme ich zumindest implizit man 3 getopt. Übrigens kann man sich daran auch gut orientieren, um selbst Optionen gnu-konform zu implementieren.am2 hat geschrieben:Vielen Dank für die Aufklärung.
Ja, es sind Argumente (und weniger Parameter), die z.B. an die main() übergeben werden und mittels argc und *argv[] verwaltet werden. Wie das programmiertechnisch geht, weiß ich im Prinzip, nur nutze ich das so gut wie nie. Ich dachte wirklich, dass die "Vorzeichen"-Geschichte einem Schema folgt, zumal manche man-pages verraten, das "-" die Kurz- und "--" die Langforn eines Argumentes ist.
@Meillo, die man-page von dd lässt tatsächlich Sonderbares erkennen, nur kannte ich dd bis jetzt noch nicht.
Zu dd: Es gibt noch immer ein paar Ausreißer aus den Pionierzeiten von UNIX. Ein anderes Beispiel wäre tar, wo man die Optionen auch ohne "-" angeben kann. Solche altehrwürdigen Dinge muss man wohl hinnehmen und so betrachten wie Ausnahmen bei Grammatik und Beugung in der Alltagssprache.