1

Некоторые команды и программы используют -h для отображения справки, некоторые используют --help а некоторые распознают оба. Это сводит меня с ума. Есть ли правило, чтобы выбрать правильный?

2 ответа2

2

Боюсь, что нет правила: обвинять историю.

Изначально DOS и его предшественники использовали /? , в то время как Unix использовал - в качестве индикатора опции, поскольку / был разделителем каталогов; так как оболочка может расширяться -? в другую строку по расширению имени файла, -h стало нормой.

Пока все относительно просто.

В cmd многие команды сохраняют /? условно, но те, которые транскрибируются из Unix/Linux, могут использовать -h , /h или /help .

Между тем, в Linux некоторые команды стали настолько всеобъемлющими, что большая часть алфавита использовалась в опциях, поэтому более подробный -- стал использоваться для опций, а один - оставался альтернативой для более распространенных опций. И вот тут-то и начались конфликты: в таких командах, как ls и du чувствовалось, что -h лучше использовать в качестве синонима для длинного --human-readable , так как его, скорее всего, будут вызывать чаще, чем help.

Чтобы усложнить ситуацию, местные языковые версия нескольких программ перевели параметры, так что по - французский опция помощи становится -a от пособника или ассистера, например.

Одна вещь, которая часто работает, -- это: это почти всегда недопустимый параметр, и программа обычно сообщает об ошибке, а затем либо дает полную справку, либо сообщает вам, что такое опция справки.

В конечном итоге пользователи подчиняются прихотям программистов: и в Windows, и в Linux есть утилиты, написанные огромным и разнородным числом людей, и мы в их руках.

Мне бы хотелось, чтобы все было по-другому, но в конечном итоге мы должны работать с тем, что доступно, или тратить свою жизнь на поддержание собственных версий.

0

Это из-за следующей причины:

Прежде всего, большинство команд linux поддерживают параметры, используя следующую функцию:

getopt() и getopt_long().

getopt() использовался для поддержки одного символа с «-», чтобы различать различные опции

Параметр long, то есть getopt_long() (например: --help), является расширением GNU, которое обеспечивает большую читаемость, а также понимание значения параметров.

getopt_long() поддерживает как короткую, так и длинную типизацию параметров, поэтому многие из команд могут поддерживать обе.

Другая причина, по которой хотелось бы поддерживать оба параметра: Сохранение обратной совместимости.

JFYR: http://en.wikipedia.org/wiki/Getopt

Надеюсь выше поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .