1

Этот вопрос, возможно, задавался раньше ...

Почему флаги типа --recursive имеют две черты вместо просто -recursive? Я знаю, что сокращенная версия просто -r. Существует ли максимальное количество символов, которое может иметь флаг с одним тире, прежде чем он потребует двух тире?

2 ответа2

2

Проблема в том, что вы можете сказать что-то вроде ls -laR ; это эквивалентно ls -l -a -R . Так что -recursive будет интерпретироваться как -r -e -c -u -r -s -i -v -e .

1

Нет точного правила использовать одинарный или двойной тире в качестве опции для программы. Если кто-то решил работать с опциями самостоятельно, он может реализовать все, что захочет. Но если программист не ищет PITA и хочет, чтобы программа использовала общий, хорошо узнаваемый способ, то можно было бы использовать стандартные функции getopt/getopt_long которые обрабатывают длинные параметры (длинная строка, как вы просили), как двойные пунктирные короткие параметры. (один символ) с префиксом с одной чертой. Функция getopt является частью <unistd.h> на языке Си. Эту же функцию можно использовать в системах на основе Unix в стандартных оболочках man getopt 1 которые используют параметры синтаксического анализа с одинарной и двойной штриховой (длинной) опцией.

Существует ли максимальное количество символов, которое может иметь флаг с одним тире, прежде чем он потребует двух тире?

Если кто-то использует функцию, описанную выше, короткие варианты могут иметь только один единственный символ.

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