Existem vários padrões diferentes para opções que foram usadas historicamente em aplicativos UNIX. Vários antigos, como o tar , usam um esquema posicional:
argumentos de opções de comando
como por exemplo, o alcatrão usa
arquivo tar * something * f "operado em" * "caminhos de arquivos para manipular" *
Em uma primeira tentativa de evitar a confusão, o tar e alguns outros programas com o velho estilo de argumentos de bandeiras permitiram delimitar as bandeiras com traços, mas a maioria de nós simplesmente ignorou isso.
Alguns outros comandos têm uma sintaxe de linha de comando mais complicada, como dd (1), que usa bandeiras, sinais de igual, nomes de caminho, argumentos e uma perdiz em uma pereira, todos com abandono.
No BSD e nas versões posteriores do unix, isso tinha convergido mais ou menos para sinalizadores de caracteres únicos marcados 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 as ferramentas GNU, começou a haver limitações impostas pelo número de sinalizadores possíveis. 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 '-'s únicos.
E foi assim que surgiu a bagunça que está agora.