EDIT: Вказувалося, що цей стиль є GNU-ізмом, і що Unixes, що не базується на GNU, прагнуть використовувати синтаксис з одним тире (зокрема, варіанти OS X та BSD).
Незважаючи на статус GNU-ism, багато щойно написаних програм у стилі Unix використовують цей стиль:
--long-option
для довгих імен варіантів,
-s
для коротких (односимвольних) варіантів,
-abc
для декількох коротких варіантів без аргументів (один символ на варіант).
- Варіанти з аргументами:
--long arg
або --long=arg
для довгих варіантів,
-s arg
, -sarg
Або ( за бажанням) -s=arg
для коротких опцій. Це може поєднуватися з іншими короткими варіантами, якщо аргумент має лише останній.
- Один і той же «семантичний» варіант може мати декілька псевдонімів, найчастіше короткий (швидший набрати) та довгий (простіше запам’ятати).
Кожен, хто використовував оболонку Linux протягом певного часу, повинен бути знайомий з цим стилем 1 , тому він має принцип найменшого здивування на своїй стороні. Доречно також дозволити групування декількох коротких варіантів без неоднозначності з довгими варіантами.
1 Наприклад, деякі програми, що використовують цей стиль (на моїй машині Linux):ls
, grep
, man
, sed
, bash
і т.д. ( EDIT: це мабуть GNU-ізми , хоча, BSD і OS X машина не використовує цей стиль)
Є кілька бібліотек, які можуть подбати про те, щоб розібрати це для вас (найвідоміша істота) реалізація проекту GNU з Getopt ), тільки маючи потребу вам вказати , які довгі і короткі варіанти існують, чи приймають вони аргумент, і що робити , коли варіант знайдений. (І звичайно, що робити для позиційних аргументів, тобто тих, які не починаються -
і не є аргументами попередніх варіантів)
find
це дуже стара програма (або, можливо, більше ймовірність: переписана версія дуже старої програми), яку неможливо легко змінити для використання нового синтаксису командного рядка. Забагато сценаріїв зламається, і занадто багато користувачів, звикли до старого синтаксису, скаржиться. javac
ймовірно, під впливомgcc
і друзі, які також слідують старовинному синтаксису з історичних причин.