РЕДАКТИРОВАТЬ: было отмечено, что этот стиль является 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и друзей, которые также следуют старому синтаксису по историческим причинам.