Le plus courant est GNU getopt style, avec un tiret pour les options courtes et deux tirets pour les options longues.
-  Initialement, les programmes Unix prenaient des options à une seule lettre précédées d'un seul tiret et éventuellement regroupées : ls -laF ls -l -a -FLes deux commandes ci-dessus sont égales. Lorsqu'une option prend une valeur, elle remplace le groupement :dans gpg -aofoo.gpg,-aet-osont des options etfoo.gpgest la valeur donnée à-o.
-  La plupart d'entre eux l'ont fait, de toute façon. tar cvzfest un spectacle courant. Les versions actuelles acceptenttar -cvzfaussi, et selon que vous ajoutez ou non le tiret, les arguments seront interprétés de manière très différente. Par exemple, ces deux signifient la même chose (notez que les options sans tiret ne sont pas juste avant leur valeur) :tar -xf file.tgz -vzO /etc/passwd /var/backupstar xfvzO file.tgz /etc/passwd /var/backupsBSD psutilise toujours-; SysVpsne fait jamais. La version Linux accepte les deux versions et modifie son comportement selon qu'une option a été précédée ou non d'un tiret. (Contrairement à l'exemple tar ci-dessus, ps change l'option significations également.)
-  Les programmes X11 utilisaient des options longues précédées d'un simple tiret ou parfois d'un signe plus : xterm -class FooTerm +vb -u8Cela définit les options classetu8, et annule levboption.Le style X11 est incompatible avec le groupement d'options. 
-  Plus tard, des options longues ont été ajoutées à GNU getopt()d'une manière compatible avec les options à une lettre.gpg -se --no-armor --output=signed.gpgCela définit -s,-e, et--no-armor(qui est opposé à--armor).Habituellement, --output=signed.gpget--output signed.gpgsont équivalents. (Mais pas toujours - par exemple, curl n'accepte pas le premier, seulement le second.)(Si je me souviens bien, les options longues utilisaient +comme préfixe avant d'être remplacé par--.)
-  La spécification POSIX comporte une section Utility Argument Syntax, qui décrit les options à un caractère. 
La plupart des programmes Windows utilisent leurs propres analyseurs, ce qui rend les utilisateurs fous.
- Certains nécessitent /a /b /c, d'autres autorisent le style VMS/a/b/c, d'autres encore préfèrent le style Unix/abc.
- Le plus utilisé /comme préfixe, certains acceptent aussi-, les autres n'acceptent que-.
- Les valeurs peuvent être données sous la forme /foo bar,/foo=bar,/foo:bar.
- Habituellement, les espaces peuvent être /quoted "like this", mais certains programmes prennent le"comme caractère littéral. (C'est un inconvénient de laisser le programme faire son propre découpage de mots ; sous Unix, cela est géré par le shell.)
- Les programmes multiplateformes peuvent utiliser une implémentation de getopt.
 En général, le premier se trouve dans des programmes plus anciens qui sont trop bien ancrés pour changer. Ce type d'options longues est incompatible avec le standard getopt() fonction.
 Le deuxième style a été introduit par GNU getopt_long() , et est conforme aux normes existantes qui s'attendent à ce que le premier style soit regroupé avec des options courtes (c'est-à-dire -orange devrait signifier -o -r -a -n -g -e ). Ce style d'option longue est fortement préféré.