Каков правильный порядок размещения флагов и параметров в программе CLI [закрыт]

Я заметил, что некоторые программы работают по-разному, когда флаги используются перед входными параметрами, а не добавляются флаги в конце. Поэтому я хочу знать, каков традиционно принятый способ упорядочить параметры и флаги в программе Ubuntu CLI.

Я специально спрашиваю о Ubuntu, так как это моя платформа. Я понимаю, что это зависит от выполняемой программы, но что такое норма?

Например:

./myprog -d file.txt

Vs

./myprog file.txt -d
1
задан 9 April 2016 в 11:15

2 ответа

Насколько я видел, нет конвенции. Если вы разрабатываете программу / скрипт, вам решать, как обрабатывать заказ. Например, команда find выдаст предупреждение, если я поместил аргумент, связанный с каталогом, после аргумента, связанного с именованием.

$ find /etc -iname "passwd" -maxdepth 1
find: warning: you have specified the -maxdepth option after a non-option argument -iname, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it).  Please specify options before other arguments.

/etc/passwd

Другим программам может не нравиться заказ. У меня есть простой скрипт getopts.sh, который я поддерживаю, когда мне нужно использовать аргументы командной строки в другом скрипте, и он анализирует аргументы в определенном порядке

$ getopts.sh  test1 -w1 test2                                                 
Hello, I'm main
The arguments are  test1 -w1 test2
2
ответ дан 23 May 2018 в 12:17

Соглашения и рекомендации POSIX заключаются в том, что параметры (вещи с -) предшествуют аргументам / операндам (все остальное). Это самое безопасное предположение.

http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html#tag_12_02

1
ответ дан 23 May 2018 в 12:17

Другие вопросы по тегам:

Похожие вопросы: