РЕДАКТИРОВАТЬ: было отмечено, что этот стиль является GNU-изм, и что Unix на основе не GNU, как правило, используют синтаксис с одной чертой (в частности, варианты OS X и BSD).
Несмотря на статус GNU-ism, многие недавно написанные программы в стиле Unix используют этот стиль:
--long-option
для длинных названий опций,
-s
для коротких (односимвольных) вариантов,
-abc
для нескольких коротких опций без аргументов (один символ на опцию).
- Варианты с аргументами:
--long arg
или --long=arg
для длинных вариантов,
-s arg
, -sarg
Или ( по желанию) -s=arg
для коротких опций. Это можно сочетать с другими короткими опциями, если только последний имеет аргумент.
- Один и тот же «семантический» параметр может иметь несколько псевдонимов, чаще всего короткий (более быстрый для ввода) и длинный (легче запоминаемый).
Любой, кто использовал оболочку Linux в течение любого промежутка времени, должен быть знаком с этим стилем 1 , поэтому на его стороне лежит принцип наименьшего удивления. Позволяет группировать несколько коротких опций, не противореча с длинными опциями.
- Так , например, некоторые из программ , использующих этот стиль (на моей машине Linux): ls
, grep
, man
, sed
, bash
и т.д. ( EDIT: это видимо GNU-измы , хотя, BSD и OS X машина не использует этот стиль)
Есть несколько библиотек , которые могут позаботиться о разборе это для вас (наиболее хорошо известным является реализация проекта GNU из Getopt ), только нуждаясь вам указать , какие длинные и короткие варианты существуют, принимают ли они аргумент, и что делать , когда вариант найден. (И, конечно, что делать с позиционными аргументами, то есть теми, которые не начинаются -
и не являются аргументами для предыдущих опций)
find
это очень старая программа (или, более вероятно, переписанная версия очень старой программы), которую нельзя легко изменить, чтобы использовать новый синтаксис командной строки. Слишком много сценариев сломалось бы, и слишком многие пользователи, привыкшие к старому синтаксису, будут жаловаться. javac
вероятно, находились под влиянием gcc
и друзей, которые также следуют старому синтаксису по историческим причинам.