Я не думаю, что оболочка / утилиты в историческом Unix или в чем-то «недавнем», как 4.4BSD, поддерживали использование двойного тире (или двух последовательных дефисов) в качестве конца разделителя опций . В FreeBSD вы можете увидеть, например, заметку, представленную на rm
страницах руководства с выпуском 2.2.1 (1997). Но это только документация для одной команды.
Глядя на самый старый журнал изменений файловой утилиты GNU, который я могу найти, я вижу это 1 (слегка измененное):
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.
Это предшествует Linux . Очевидно, что необходимо учитывать тот факт, что вам может потребоваться создать файл с именем, содержащим то же количество цифр, что и в спецификации времени (десятичное или восьмизначное число), а не указывать временную метку для существующего файла ...
- Так это же posix.1, который ввел double-dash (
--
) в качестве конца разделителя опций в оболочках Unix? - Началось ли все это потому, что некоторые люди хотели использовать цифры в именах файлов
touch
в начале 90-х, а затем это происходило по частям по одной утилите за десятилетие? - О чем этот оживленный комментарий в журнале изменений?
- Когда Рекомендация 10 ( аргумент - должен быть принят в качестве разделителя, указывающего конец параметров. [...] ) введена в синтаксис служебной программы POSIX ?
1. В отличие от этого, т. Е. Документирование длинных опций во всех командах, используемых глобально, что не имеет никакого отношения. С другой стороны, вы можете увидеть ссылки на ограничителе появляются в чем - то вроде GNU rm.c в 2000 году в качестве комментария, перед тем , как подвергается конечному пользователю в 2005 году ( diagnose_leading_hyphen функции). Но это все гораздо позже и касается очень конкретного случая использования.
getopt
был написан в начале 1980-х годов. Если кто-то может получить документ getopt от Uniforum '85, это может дать некоторую историю.
--
.
getopt
, поддерживает--
.