Nejběžnější je GNU getopt styl, s jednou pomlčkou pro krátké možnosti a dvěma pomlčkami pro dlouhé možnosti.
-
Zpočátku používaly unixové programy jednopísmenné možnosti, kterým předcházela jedna pomlčka a volitelně vázané:
ls -laF ls -l -a -FOba výše uvedené příkazy jsou stejné.
Když volba nabývá hodnoty, přepíše sdružování:V
gpg -aofoo.gpg,-aa-ojsou volby afoo.gpgje hodnota přiřazená-o. -
Většina z nich ano.
tar cvzfje běžný pohled. Aktuální verze akceptujítar -cvzftaké a v závislosti na tom, zda přidáte pomlčku, budou argumenty interpretovány velmi odlišnými způsoby. Například tyto dva znamenají totéž (všimněte si, že možnosti bez pomlček nejsou bezprostředně před jejich hodnotou):tar -xf file.tgz -vzO /etc/passwd /var/backupstar xfvzO file.tgz /etc/passwd /var/backupsBSD
psvždy používá-; SysVpsnikdy ne. Verze pro Linux přijímá obě verze a mění své chování v závislosti na tom, zda byla volba předponou s pomlčkou. (Na rozdíl od výše uvedeného příkladu tar ps mění možnost významy také.) -
Programy X11 používaly dlouhé možnosti, kterým předcházela jedna pomlčka nebo někdy znaménko plus:
xterm -class FooTerm +vb -u8Tím nastavíte možnosti
classau8a zruší nastavenívbmožnost.Styl X11 je nekompatibilní se sdružováním možností.
-
Později byly do GNU
getopt()přidány dlouhé volby způsobem, který je kompatibilní s jednopísmennými možnostmi.gpg -se --no-armor --output=signed.gpgTím nastavíte
-s,-ea--no-armor(což je opak--armor).Obvykle
--output=signed.gpga--output signed.gpgjsou ekvivalentní. (Ale ne vždy – např. curl neakceptuje první, pouze druhé.)(Pokud si dobře vzpomínám, dlouhé možnosti používaly
+jako předpona před tím, než byla změněna na--.) -
Specifikace POSIX má část Syntaxe argumentů nástroje, která popisuje možnosti s jedním znakem.
Většina programů pro Windows používá své vlastní analyzátory, což uživatele přivádí k šílenství.
- Některé vyžadují
/a /b /c, ostatní umožňují/a/b/cve stylu VMS , ještě jiní preferují unixový styl/abc. - Většina používá
/jako prefix, někteří také přijímají-, ostatní přijímají pouze-. - Hodnoty lze zadat jako
/foo bar,/foo=bar,/foo:bar. - Mezery mohou být obvykle
/quoted "like this", ale některé programy používají"jako doslovná postava. (Toto je nevýhoda toho, že program necháte rozdělovat vlastní slova; v Unixu to řeší shell.) - Programy napříč platformami mohou používat implementaci
getopt.
Obecně se první vyskytuje ve starších programech, které jsou příliš dobře zakořeněné na to, aby je bylo možné změnit. Tyto druhy dlouhých voleb nejsou kompatibilní se standardním getopt() funkce.
Druhý styl byl představen GNU getopt_long() a je v souladu se stávajícími standardy, které očekávají, že první styl bude spojen s krátkými možnostmi (tj. -orange očekává se, že bude znamenat -o -r -a -n -g -e ). Tento styl dlouhé možnosti je silně preferován.