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

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

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

Например:

./myprog -d file.txt

Vs

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

3 ответа

Нет никакого правильного порядка, поскольку это варьируется от межпрограммного. ОС просто передает параметры командной строки программе в порядке, который им дают. Путь, которым они анализируются, зависит от программы или библиотек парсинга, которыми пользуются.

В большинстве случаев порядок не имеет значения, и общие библиотеки парсинга как getopt или Python argparse позволяют порядку независимый парсинг. Но другие программы могут быть более придирчивыми. Также обратите внимание, что даже с порядком независимый парсинг у Вас все еще есть зависевшие аргументы порядка. Значение некоторых опций должно быть, следуют аргументом:

 ls --sort time -l

time здесь аргумент --sort опция и таким образом должен прибыть после него. Однако порядок --sort time и -l не имеет значения. Много программ позволяют писать --sort=time для создания этого более явным, но не все делают.

проект GNU действительно имеет , стандарт кодирования для командной строки, обрабатывающей и большинство их инструментов, следует за этим, но это не что-то, от чего можно зависеть.

В случаях, где порядок действительно имеет значение, Вы обычно делаете ./myprog -d file.txt, и это выглядит более хорошим в сценариях оболочки также. ./myprog file.txt -d стиль записи больше для командной строки, когда Вы просто ввели вещь, и хотят добавить -d флаг, но не курсор полностью назад к середине строки.

0
ответ дан 9 April 2016 в 21:15
  • 1
    Не может определить местоположение " fxtpn1a.ppd" файл. Существует несколько .cab файлов и тралили через них всех. Может использовать программное обеспечение для соединения с принтером, но это не распечатает правильно. Заключенная в кавычки статья имеет битые ссылки в ней также, который неудачен. Спасибо за справку, собираясь возвращать принтер и добавлять ксерокс Фуджи к моему Не Покупают список. Довольно рассерженный на него, главным образом при покупке принтера, не проверяя возможность соединения сначала. – Keepiru1 19 August 2017 в 15:45

Насколько я видел, что нет никакой конвенции. Если Вы разрабатываете программу/сценарий Вам решать, чтобы решить, как порядок должен быть обработан. Например, 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
0
ответ дан 9 April 2016 в 21:15
  • 1
    Обновление: Найденный файлом, исправленным это согласно инструкциям выше, и это все еще печатает одну пустую страницу для документа на 19 страниц. Возврат принтера и сопротивление желанию сделать что-то противное к ксероксу Фуджи. Найдет Ubuntu дружественным принтером сначала, и затем купит его... Глупый я для того, чтобы не сделать это сначала. Еще раз спасибо за помощь. Каждое из этих препятствий получает меня лучше в Ubuntu хотя! – Keepiru1 19 August 2017 в 16:59

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

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

0
ответ дан 9 April 2016 в 21:15
  • 1
    Предоставьте полный ответ, не ссылку на другой сайт поддержки. Вы, возможно, предоставили прямую ссылку на драйвер и некоторое объяснение использования его. – pim 22 February 2018 в 01:53

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

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