Existem vários padrões diferentes para opções que foram usadas historicamente em aplicativos UNIX. Vários antigos, como tar , usam um esquema posicional:
command options arguments
como por exemplo o tar usa
tar *something*f "file operated on" *"paths of files to manipulate"*
Em uma primeira tentativa para evitar a confusão, tar e alguns outros programas com o estilo antigo flags-arguments permitiram delimitar os flags com traços, mas a maioria de nós antigos simplesmente ignorou isso. / p>
Alguns outros comandos têm uma sintaxe de linha de comando mais complicada, como dd (1) que usa sinalizadores, sinais de igual, nomes de caminho, argumentos e uma perdiz em uma pereira, todos com abandono. / p>
No BSD e nas versões posteriores do unix, isso tinha mais ou menos convergido para flags de caractere único marcadas com '-', mas isso começou a apresentar alguns problemas:
- as bandeiras podem ser difíceis de lembrar
- às vezes você realmente queria usar um nome com '-'
- e especialmente com ferramentas GNU, começaram a haver limitações impostas pelo número de possíveis sinalizadores. Então as ferramentas GNU adicionaram opções longas do GNU como
--output
.
Em seguida, a Sun decidiu que o extra '-' era redundante e começou a usar sinalizadores de estilo longo com single '-s'.
E foi assim que aconteceu a bagunça que é agora.