linux unterschied einfaches doppeltes minus?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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. 

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995

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.

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.

Woher ich das weiß:eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102
TeeTier  28.11.2015, 20:50

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

2