Я не думаю, що оболонка / утиліти в історичному 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, який представив подвійний тире (
--
) як кінець розмежувача параметрів у оболонках Unix? - Це все почалося через те, що деякі люди хотіли використовувати цифри у назви файлів
touch
на початку 90-х, а потім це продовжувалося поступово однією утилітою одночасно протягом десятиліття ?? - Про що жвавий коментар у журналі змін?
- Коли Керівний принцип 10 ( Аргумент. - повинно бути прийнято в якості роздільника , що вказує кінець опцій [...] ) вводяться в POSIX Utility Синтаксис ?
1. На відміну від цього, тобто документування довгих опцій у всіх командах, що використовуються в усьому світі, що не пов'язано. З іншого боку, ви можете побачити посилання на обмежувачі з'являються в чому - щось на зразок GNU rm.c 2000 року в якості коментаря, перед тим , як піддається кінцевому користувачеві в 2005 році ( diagnose_leading_hyphen функції). Але це все набагато пізніше і йдеться про дуже конкретний випадок використання.
getopt
було написано на початку 1980-х. Якщо хтось може отримати папір для отримання від Uniforum '85, це може дати певну історію.
--
.
getopt
підтримку--
.