Команда Git - значение "-" и "-"
Когда я изучаю git, я запутываюсь, когда нужно использовать одну или две черты. Какая значительная разница в использовании?
git ls-tree [-d] [-r] [-t] [-l] [-z] [--name-only] [--name-status] [--full-name] [--full-tree] [--abbrev[=<n>]] <tree-ish> [<path>…]
Иногда я могу использовать их взаимозаменяемо. например: -l
а также --long
что меня смущает больше.
1 ответ
Git близок к синтаксису аргумента служебной программы POSIX, но использует --arg=xx
также (GNU)
Этот документ "Стандарты для интерфейсов командной строки" хорошо повторяет используемое соглашение:
В оригинальной традиции Unix параметры командной строки - это отдельные буквы, перед которыми стоит один дефис.
Опции флага режима, которые не принимают следующие аргументы, могут быть объединены вместе; таким образом, если-a
а также-b
являются опциями режима,-ab
или же-ba
также правильно и позволяет оба.
Аргумент к опции, если таковой имеется, следует за ней (необязательно, через пробел).
В этом стиле строчные опции предпочтительнее прописных. Когда вы используете опции в верхнем регистре, лучше всего, чтобы они были специальными вариантами опций в нижнем регистре.Оригинальный стиль Unix развивался на медленных телетайпах ASR-33, которые делали краткость добродетелью; таким образом однобуквенные варианты.
Удерживание клавиши Shift потребовало фактического усилия; Таким образом, предпочтение в нижнем регистре и использование "-
"(А не, возможно, более логичное" + ") для включения параметров.Стиль GNU использует ключевые слова параметров (а не буквы ключевых слов), перед которыми стоят два дефиса. Он развивался годами позже, когда некоторые из довольно сложных утилит GNU начали исчерпывать однобуквенные ключи опций (это представляло собой патч для симптома, а не лекарство от основного заболевания).
Он остается популярным, потому что опции GNU легче читать, чем алфавитный суп старых стилей.
Опции в стиле GNU нельзя объединять без разделения пробелов. Опциональный аргумент (если есть) может быть разделен пробелом или одним "=
"(Знак равенства).Лидер опций двойного дефиса GNU был выбран так, чтобы традиционные однобуквенные опции и опции ключевых слов в стиле GNU могли быть однозначно смешаны в одной командной строке.
Таким образом, если ваш первоначальный дизайн имеет несколько простых параметров, вы можете использовать стиль Unix, не беспокоясь о том, чтобы вызвать несовместимый "день флага", если позже вам потребуется переключиться на стиль GNU.
С другой стороны, если вы используете стиль GNU, рекомендуется поддерживать однобуквенные эквиваленты, по крайней мере, для наиболее распространенных вариантов.