Eu não acho que o shell / utilitários no Unix histórico nem em algo tão "recente" quanto o 4.4BSD suportasse o uso de um traço duplo (ou dois hífens consecutivos) como um delimitador de final de opções . Com o FreeBSD , você pode ver, por exemplo, uma nota introduzida nas rm
páginas de manual com a versão 2.2.1 (1997). Mas esta é apenas a documentação para um comando.
Olhando para o changelog mais antigo do arquivo GNU que posso encontrar, vejo este 1 (ligeiramente alterado):
Tue Aug 28 18:05:24 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* touch.c (main): Don't interpret first non-option arg as a <---
time if `--' is given (POSIX-required kludge).
* touch.c: Add long-named options.
* Many files: Include <getopt.h> instead of "getopt.h" since
getopt.h will be in the GNU /usr/include.
* install.c: Declare some functions.
* touch.c, getdate.y, posixtime.y, mktime.c: New files, from bin-src.
* posixtime.y: Move year from before time to after it (but
before the seconds), for 1003.2 draft 10.
Isso é anterior ao Linux . É claramente necessário levar em consideração o fato de que você pode querer criar um arquivo com um nome que contenha o mesmo número de dígitos que uma especificação de tempo (número decimal de oito ou dez dígitos) - em vez de especificar um carimbo de data e hora para um arquivo existente ...
- Então, foi o posix.1 que introduziu o traço duplo (
--
) como um delimitador de fim de opções nos shells do Unix? - Tudo isso começou porque algumas pessoas queriam usar dígitos nos nomes de arquivos
touch
no início dos anos 90 e isso continuou de forma fragmentada, um utilitário por vez durante uma década? - Sobre o que é o comentário espirituoso no changelog?
- Quando a Diretriz 10 ( O argumento - deve ser aceito como delimitador, indicando o final das opções.) [...] ) foi introduzida na sintaxe do utilitário POSIX ?
1. Em oposição a isso, ou seja, documentando as opções longas em todos os comandos de uso global, o que não é relacionado. Por outro lado, você pode ver referência ao delimitador aparecem em algo como GNU rm.c em 2000 como um comentário, antes de ser exposto para o usuário final em 2005 (o diagnose_leading_hyphen função). Mas tudo isso é muito mais tarde e trata de um caso de uso muito específico.
getopt
foi escrito no início dos anos 80. Se alguém puder obter o artigo da Uniforum '85, isso pode dar um pouco de história.
--
.
getopt
suporte--
.