O mais comum é o estilo getopt do GNU, com um traço para opções curtas e dois traços para opções longas.
-
Inicialmente, os programas Unix utilizavam opções de letras únicas precedidas por um único traço e, opcionalmente, agrupadas:
ls -laF ls -l -a -FOs dois comandos acima são iguais.
Quando uma opção recebe um valor, ela substitui o empacotamento: Em
gpg -aofoo.gpg,-ae-osão opções efoo.gpgé o valor atribuído a-o. -
A maioria deles, de qualquer forma.
tar cvzfé uma visão comum. As versões atuais aceitamtar -cvzftambém e, dependendo de você adicionar o traço, os argumentos serão interpretados de maneiras muito diferentes. Por exemplo, esses dois significam a mesma coisa (observe como as opções sem painel não são imediatamente antes de seu valor):tar -xf file.tgz -vzO /etc/passwd /var/backupstar xfvzO file.tgz /etc/passwd /var/backupsO BSD
pssempre usa-; O SysVpsnunca faz. A versão do Linux aceita ambas as versões e altera seu comportamento dependendo se uma opção foi prefixada com um traço. (Diferentemente do exemplo de tar acima, ps também muda a opção significados ). -
Os programas X11 usam opções longas precedidas por um único traço ou, às vezes, um sinal de mais:
xterm -class FooTerm +vb -u8Isso define as opções
classeu8e desmarca a opçãovb.O estilo X11 é incompatível com o pacote de opções.
-
Mais tarde, opções longas foram adicionadas ao GNU
getopt()de uma maneira compatível com as opções de uma letra.gpg -se --no-armor --output=signed.gpgIsso define
-s,-ee--no-armor(que é o oposto de--armor).Normalmente,
--output=signed.gpge--output signed.gpgsão equivalentes. (Mas nem sempre - por exemplo, curl não aceita o primeiro, apenas o último).(Se bem me lembro, as opções longas usavam
+como o prefixo antes de ser alterado para--.) -
A especificação POSIX tem uma seção Sintaxe do argumento do utilitário , que descreve a opções de caracteres.
A maioria dos programas do Windows usa seus próprios analisadores, enlouquecendo os usuários.
- Alguns exigem
/a /b /c, outros permitem o estilo VMS/a/b/c, mas outros preferem o estilo Unix/abc. - A maioria usa
/como prefixo, alguns também aceitam-, outros aceitam somente-. - Os valores podem ser fornecidos como
/foo bar,/foo=bar,/foo:bar. - Normalmente, os espaços podem ser
/quoted "like this", mas alguns programas consideram o"como um caractere literal. (Essa é uma desvantagem de permitir que o programa faça sua própria divisão de palavras; no Unix, isso é feito pelo shell.) - Os programas de plataforma cruzada podem usar uma implementação de
getopt.