Я заметил, что некоторые программы работают по-разному, когда флаги используются перед входными параметрами, а не добавляются флаги в конце. Поэтому я хочу знать, каков традиционно принятый способ упорядочить параметры и флаги в программе Ubuntu CLI.
Я специально спрашиваю о Ubuntu, так как это моя платформа. Я понимаю, что это зависит от выполняемой программы, но что такое норма?
Например:
./myprog -d file.txt
Vs
./myprog file.txt -d
Насколько я видел, нет конвенции. Если вы разрабатываете программу / скрипт, вам решать, как обрабатывать заказ. Например, команда 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
Соглашения и рекомендации POSIX заключаются в том, что параметры (вещи с -) предшествуют аргументам / операндам (все остальное). Это самое безопасное предположение.
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html#tag_12_02