Was sind die Unterschiede zwischen "-" und "-" in Befehlen?

13

Ich sehe oft einen einfachen Gedankenstrich -oder einen doppelten Gedankenstrich, --gefolgt von Linux-Befehlen oder anderen installierten Linux-Programmen.

Was sind die Unterschiede zwischen einfachen Strichen und doppelten Strichen?

Geht es nur um Abkürzung? Zum Beispiel -vbedeutet die --verbosemeiste Zeit.

Peng Zhang
quelle

Antworten:

15

Es ist eine Frage der Konvention. POSIX-Standardprogramme verfügen normalerweise nur über Optionen für einzelne Zeichen, denen jeweils ein Bindestrich vorangestellt ist. Die längeren Versionen sind, soweit ich das beurteilen kann, eine Verbesserung von GNU, da sie normalerweise mit doppelten Bindestrichen versehen sind. Sie können dies in den Bibliotheken und Programme sehen zu Parse - Optionen verwendet - getoptund gnu-getoptsind. Nicht-GNU- und nicht-POSIX-kompatible Programme können etwas anderes tun. Beachten Sie, dass Sie wirklich nicht sicher sein können, ob die lange Form eines Arguments von Programm zu Programm identisch ist. -fin der Regel bedeutet --force, aber nicht mit apt-get install(häufiges Missverständnis). -vkann Version bedeuten - normalerweise oder --verboseund so weiter. Überprüfen Sie die Manpages oder andere Dokumentationen, um sicherzugehen. Schauen Sie sich auch das anWikipedia-Artikel zu getopt . All dies ist mindestens zehn Jahre älter als Linux.

ddist ein Beispiel für ein POSIX-Standarddienstprogramm, das überhaupt keine Optionen mit Bindestrich enthält . findist das klassische Beispiel für ein POSIX-Standarddienstprogramm , das Wortoptionen mit einzelnen Bindestrichen enthält - fast alle findOptionen sind mehrstellig. psunterstützt mehrere Optionsstile:

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.

GNUtar unterstützt auch mehrere Optionsstile.

Ziehen Sie in der Regel die langen Optionen in Skripten vor, wenn Sie sicher sein können, dass die Skripten in kompatiblen Umgebungen ausgeführt werden - die Verbesserung der Übersichtlichkeit ist ein Segen beim Debuggen. Aus Gründen der Portabilität werden die kurzen Optionen bevorzugt.

muru
quelle
Wirklich schöne Antwort. Danke.
Peng Zhang
4

Normalerweise können - Optionen wie pacman -Syuäquivalent zu verkettet werden pacman -S -y -u, und - Optionen nehmen im Allgemeinen einen Parameter wie in./configure --prefix=/usr

hanetzer
quelle