Frage von helpme512, 37

linux unterschied einfaches doppeltes minus?

Hallo liebe Community, ich bin vor kurzem auf Linux umgestiegen und mir ist aufgefallen, dass man im Terminal bei fast allen Befehlen Parameter mit einem Minus oder auch mit zweien benutzen kann. Ich habe bisher aber noch nicht verstanden, welchen Sinn es hat bzw. worin der Unterschied zwisschen den beiden besteht. Könnt ihr mir ja vielleicht weiterhelfen? Danke schonmal

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von guenterhalt, Community-Experte für Linux, 37

das einfach Minus-Zeichen dient der Kennzeichnung von Optionen. Damit werden z.B. mehrere Befehle  unter einem Namen zusammengefasst oder einfach Schalter gesetzt. Oft können mehrere solcher Schalter benutzt werden, die dann einzeln ( z.B. -h  -e  -l  -p   ... ) angegeben werden.
Die meisten Befehle würden auch -help (alle hintereinander) verstehen.

Eine Hilfe könnte man dann natürlich nicht mit -help aufrufen. Das eine Hilfe gewünscht ist würde man dann mit --help angeben. In dem Falle bedeutet das doppelte Minus, dass help ein Begriff ( nur ein Schalter ) ist und nicht in die einzelnen Buchstaben geteilt werden darf.  Das ist aber nicht nur bei help so.
Suche  dir Befehle heraus und rufe 

man  <Befehlesname> 

auf. Dort findet man z.B  bei cp:   -r  oder --recursiv

Das ist aber ein ungeschriebener Standard an den sich doch viele  Programmierer halten. 

Antwort
von Linuxhase, 30

Hallo

Ich habe bisher aber noch nicht verstanden, welchen Sinn es hat bzw. worin der Unterschied zwisschen den beiden besteht.

Die passende Antwort hat Dir guenterhalt bereits gegeben :-)

@guenterhalt

Das ist aber ein ungeschriebener Standard an den sich doch viele  Programmierer halten. 

Klasse Erklärung, aber

Leider nicht alle, so gibt es:

rfkill list
xinput list
tar -xvf dateiname.tar
unrar e dateiname.rar

und bestimmt noch mehr die ich jetzt nicht kenne.

Es ist leider nicht nur bei den Optionen und Parametern so, sondern auch der eigentlich "genormte" Aufbau der Manpages wird nicht immer eingehalten. So passt mein Script nicht auf die Manpage von dialog¹

Das ist wie mit der POSIX, die wird auch nur zum Teil eingehalten, sowohl bei Linux als auch bei Solaris und bei den BSDs.

Linuxhase


¹ Gemerkt habe ich das  als ich mein Manpage-Script geschrieben habe.

Kommentar von TeeTier ,

Du hast "tar -xvf" statt "tar xvf" in deinem Beispiel geschrieben. Die Macht der Gewohnheit. :)

Mir fällt oft auf, dass nur der erste Parameter ohne führendes "-" akzeptiert wird, alle darauf folgenden Parameter aber ein Minus erfordern.

7z x -y -so archive.7z

(Wobei 7z ein schlechtes Beispiel ist, da es aus der Windows-Welt kommt, und die Benutzung der Kommandozeile sich teilweise stark von "richtigen" Unix-Programmen unterscheidet.)

Bei meinen eigenen Programmen habe ich meistens so etwas hier eingebaut:

while (*arg == '-') {
++arg;
}

Und bei kleinen Programmen wird sowieso nur der erste Buchstabe beachtet, nachdem er in Kleinbuchstaben umgewandelt wurde, sodass "-h", "--help", "Help" oder "------Help_me_please" alles das selbe ist. Und meiner Erfahrung nach, machen das auch einige andere Programme so. :)

Antwort
von kloogshizer, 9

Warum es zwei Optionen mit der gleichen Funktionalität gibt, wie -r und --recursive, kann ich dir sagen. -r ist für den Einsatz auf der kommandozeile und --recursive ist für den Einsatz in Skripten. Man kann das natürlich machen wie man möchte, aber mit den lange Optionen wird der Quelltext von Skripten und deren Funktion leichter ersichtlich.

Keine passende Antwort gefunden?

Fragen Sie die Community