Являются ли они аргументами или подкомандами
Это зависит.Если программа имеет иерархию в своих аргументах, они будут подкомандами, как здесь:
docker image ls
(Программа docker
имеет команду / группу команд image
и подкоманду ls
.)
Если программа принимает аргументы для выражения последовательного выполнения, они будут просто аргументами, как здесь:
mvn clean install
(Программа mvn
сначала выполнитсяжизненный цикл clean
, затем выполнить до фазы install
в жизненном цикле default
, см. здесь .)
Я вижу, что часто аргументы имеют осмысленный порядок, такой какс Maven, в то время как варианты чаще можно разместить где угодно.Для Maven есть такие аргументы, как -D...
, -e
, -U
(чтобы упомянуть несколько распространенных).Они могут пойти куда угодно:
mvn -e clean -DskipTests install -Dcheckstyle.skip=true ... et cetera
В других программах порядок значений может иметь значение, например, find
имеет "тесты" .Они выглядят как варианты (в том смысле, что они имеют -option
-обозначение), хотя можно утверждать, что они являются аргументами.Другими словами, это зависит .
prog -a arg
Как узнать, является ли arg аргументами, принадлежащими 'prog', или аргументами, принадлежащими опции '-a'
Опять же, зависит от определения опции a
.Если он не принимает аргумент, его иногда называют flag .Если принимает аргумент, который является частью спецификации опции, и анализатор командной строки программы может это учитывать.
Лично я многому научился усборка инструментов командной строки с использованием Нажмите .(И ни в коем случае не эксперт.)