Разница между параметрами командной строки «-» и «-» с префиксом?

Сценарии в командной строке предлагают широкий диапазон типов параметров. Часто параметры могут передаваться скрипту через «- [параметр]» или «- [параметр]». Но в чем разница? Почему некоторые параметры имеют двойной «-» и некоторые только один префикс «-»? Существует ли соглашение о технической причине?

Пример возможных параметров git . (См. --exec-path[=<path>] vs. -c name=value )

 git [--version] [--help] [-C <path>] [-c name=value] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | --no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>] 

Это зависит от языка письменного заявления. Например, в bash вы можете разобрать короткие аргументы ( - ) как с getopt и с getopts и long ( -- ) с getopt .

getopts – это функция bash, getopt – отдельная программа. Поэтому для максимальной переносимости ваших сценариев bash вам нужно использовать getopts и короткие нотации.

Для других языков вы можете обратиться к разделу «parsing arguments» соответствующей документации.