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 -F
Oba výše uvedené příkazy jsou stejné.
Když volba nabývá hodnoty, přepíše sdružování:V
gpg -aofoo.gpg
,-a
a-o
jsou volby afoo.gpg
je hodnota přiřazená-o
. -
Většina z nich ano.
tar cvzf
je běžný pohled. Aktuální verze akceptujítar -cvzf
také 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/backups
tar xfvzO file.tgz /etc/passwd /var/backups
BSD
ps
vždy používá-
; SysVps
nikdy 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 -u8
Tím nastavíte možnosti
class
au8
a zruší nastavenívb
mož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.gpg
Tím nastavíte
-s
,-e
a--no-armor
(což je opak--armor
).Obvykle
--output=signed.gpg
a--output signed.gpg
jsou 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/c
ve 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.