Почему «список xinput» работает так же, как «xinput -list»?

man xinput описывает различные параметры, используемые с xinput . Один из вариантов:

 --list [--short || --long || --name-only || --id-only] [device] 

Но я могу запустить xinput --list или xinput list и дать одинаковый вывод:

 ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ PixArt USB Optical Mouse id=10 [slave pointer (2)] ⎜ ↳ PS/2 Mouse id=12 [slave pointer (2)] ⎜ ↳ AlpsPS/2 ALPS GlidePoint id=13 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Video Bus id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Integrated_Webcam_1.3M id=9 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)] ↳ Dell WMI hotkeys id=14 [slave keyboard (3)] 

Почему -- не нужно до выбора list ?

(Моя ОС – Lubuntu 13.10.)

Потому что именно так хотели разработчики.

– и – являются условными обозначениями для необязательных аргументов.

тишины обычно не предназначены для операций.

В этом случае –list – это операция (думаю, подчиненная команда) и необязательный аргумент.

См. Эти Документы , но поймите, что авторы кода могут реализовать то, что они хотят. Истина заключается в том, что, хотя это технически правильно, список и список, вероятно, были реализованы таким образом, чтобы было легче использовать больше людей.

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

Например, при разработке сценария Bash 2 таких инструментария / библиотеки, которые будут способствовать этому, – getopt и getopts . В этой статье довольно неплохо показать некоторые отличия, озаглавленные: Bash getopt и getopts .

Использование этих библиотек часто приводит к тому, что разработчик должен успешно реализовать их переключение, используя либо тире (например, list ), ни одну тире (т. -l ( -l или -list )), либо как двойную тире ( --list ).

Языки более высокого уровня, такие как Perl, Python, Ruby, C / C ++, также могут иметь эти типы библиотек. Это объясняется только тем, почему xinput может принимать и то.