O método --long-opt
é um GNUism que foi iniciado por volta de 1990.
Multics
usa -long
opções com um único traço e o projeto Multics foi iniciado na década de 1960.
UNOS
é o primeiro UNIX
clone (iniciado por um grupo de ex-funcionários da AT & T em 1980) e UNOS
introduziu um analisador de opções generalizado (o primeiro no UNIX
world) em abril de 1982. Esse analisador de opções oferece suporte a -long
opções com um único traço.
AT&T
introduziu getopt()
entre 1983 e 1984, mas getopt()
não foi reentrante antes de uma quarta variável global adicional ter sido introduzida em 1989 para o getopts
da Bourne Shell.
POSIX
implementa operandos que se parecem com opções longas com um único traço com test
e find
AT&T UNIX
introduziu -long
opções usando um único traço em torno de 1983, permitindo, por exemplo kill -INT <pid>
.
tar
e ar
não usaram o termo option
em sua documentação, mas usaram o termo keyletter
. Mais tarde, os implementadores adicionaram suporte a um -
keyletter que é ignorado, dando a impressão de que y CLI pode se parecer com outros comandos do UNIX.
dd
usa um modelo de opção próprio, mas esse modelo de opção é compatível com o modelo de opção longa de UNOS
, que define opções longas para o seguinte formato:
-
-long
-
-long arg
-
long=arg
-
-long=arg
-
long= arg
-
-long= arg
O analisador da opção UNOS
é superior à implementação do GNU longopt, pois usa uma cadeia de formatação que permite converter automaticamente argumentos inteiros e booleanos, e permite implementar funções de retorno de chamada para a opção eny, se desejado. Não há necessidade de reordenar a lista de argumentos por causa da interface da função de retorno de chamada.
A implementação do Solaris getopt()
suporta opções longas como aliases para opções curtas desde 2004, mas realmente não documenta isso, embora fosse utilizável pelo Bourne Shell
via getopts(1)
desde que foi introduzido.
O Schily Bourne Shell
documenta esse recurso e, além disso, introduziu mais getopt()
de aprimoramentos que permitem opções longas que não são apenas aliases para uma opção curta e que permitem opções longas de traço único.
Veja o link na seção de comandos internos para getopts.
Um analisador de opções modernizado e aprimorado baseado nas idéias do analisador da opção UNOS
está nas ferramentas schily em libschily/getargs.c
link
é usado nos programas da ferramenta schily que não são baseados no código AT & T e resulta em menos problemas com nomes de opções definidas infelizes, como em mkisofs