Übergabe-Parameter in der Konsole

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
am2
Beiträge: 276
Registriert: 20.08.2016 21:56:44

Übergabe-Parameter in der Konsole

Beitrag von am2 » 13.10.2016 14:39:50

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 :mrgreen:

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Übergabe-Parameter in der Konsole

Beitrag von smutbert » 13.10.2016 15:04:18

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«

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Übergabe-Parameter in der Konsole

Beitrag von uname » 13.10.2016 15:55:51

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

dufty2
Beiträge: 1711
Registriert: 22.12.2013 16:41:16

Re: Übergabe-Parameter in der Konsole

Beitrag von dufty2 » 13.10.2016 16:41:38

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

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Übergabe-Parameter in der Konsole

Beitrag von Meillo » 13.10.2016 17:00:24

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]
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.)

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!

am2
Beiträge: 276
Registriert: 20.08.2016 21:56:44

Re: Übergabe-Parameter in der Konsole

Beitrag von am2 » 13.10.2016 18:09:46

Vielen Dank für die Aufklärung. :wink:
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.

Benutzeravatar
Livingston
Beiträge: 1454
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: Übergabe-Parameter in der Konsole

Beitrag von Livingston » 14.10.2016 13:47:42

am2 hat geschrieben:Vielen Dank für die Aufklärung. :wink:
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.
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.

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.

Antworten