Иногда я вижу -h руководство для приложения, а иногда я нахожу --help в руководстве.

В чем разница между ними? Есть ли история / история об этом?

4 ответа4

2

Стандартным местом для документации о командах unix является руководство по unix (также называемое «man-страницы») (разделы 1 и 8), доступ к которому осуществляется через команду man . Например, чтобы получить документацию для команды grep , вы должны использовать man grep .

Некоторые команды также предоставляют некоторую встроенную документацию, если они запускаются с опцией, например -h или --help . Это не совсем стандартно, и то, как и как это предусмотрено, сильно зависит от команды. Что касается разницы между -h и --help , это в основном историческое. "Стандарт" для командных опций в Unix развился довольно немного за десятилетия.

Когда unix был впервые "рожден", разные команды использовали опции в совершенно разных форматах; этот ранний хаос сохраняется в нескольких командах, таких как tar (который обычно предполагает, что его первый аргумент - это параметры, начинается ли он с -) или dd (который обрабатывает все свои аргументы как длинные опции без --).

Но это не заняло много времени, чтобы появился стандарт сортов: опции начинались с одной черты и состояли из одной буквы или другого символа, и они должны были предшествовать любым позиционным (не опциональным) параметрам. Это было до того, как во многие команды была включена какая-либо встроенная справка, поэтому команды этой эпохи часто используют -h для чего-то другого, кроме справки (например, grep -h не печатает имена файлов, где будет grep ).

Совсем недавно появилось несколько дополнений к этому "стандарту": длинные опции, начинающиеся с двойной черты (например, --help), позволяющие опциям указывать после или внутри позиционных параметров, и использование -- для указания конца опций (поэтому все, что после этого является позиционным параметром, даже если оно начинается с тире). Некоторые команды используют эти новые стили параметров, некоторые нет.

Также недавно некоторые команды включили / добавили встроенную справку. То, как это вызывается, зависит, в основном, от прихоти разработчика (ей) команды, а также от того, имел ли -h уже какое-то другое значение (как в случаях, подобных grep). Поэтому некоторые команды принимают -h за помощь, некоторые принимают --help , некоторые оба, а некоторые нет.

По иронии судьбы, лучший способ узнать, как получить встроенную справку для команды (если она существует), это прочитать ее справочную страницу. Вот выдержка из man grep:

 -H      Always print filename headers with output lines.

 -h, --no-filename
         Never print filename headers (i.e. filenames) with output lines.

 --help  Print a brief help message.
0

Обычно используется --help , но если -h тоже работает, разработчики, вероятно, включили его, чтобы быстрее набирать текст.

Однако это не стандартно и очень зависит от команды - vim использует оба, например, а bash использует только --help .

Таким образом, если вы используете Linux, man command обычно является полным справочным руководством.

Вы также можете прочитать этот ответ для получения дополнительной информации об аргументах командной строки.

0

-h короткий атрибут предназначен для экономии времени пользователя, который набирает команду (команды), иногда очень длинную;

Атрибут --help предназначен для скриптов bash (которые должны быть понятны многим пользователям). В этом примере -h очевиден, но иногда есть много атрибутов, поэтому использование -j , -i -g в bash-скрипте корректно - bash-скрипт будет работать правильно, но ваш коллега по работе, вероятно, убьет вас :)

-1

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

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