Xinput

為什麼“xinput list”和“xinput –list”一樣工作?

  • December 16, 2013

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 既是一個操作(想想子命令)又是一個可選參數。

請參閱這些文件,但要意識到程式碼編寫者可以實現他們想要的。事實是,雖然它在技術上是正確的 –list 和 list 可能是以這種方式實現的,以便更多人更容易使用。

切換完全取決於應用程序的開發人員,他們希望如何實現它。但通常他們會受到其他無法控制的事情的限制,例如決定使用一個庫/工具來幫助他們解析命令的命令行參數。

例如,在開發 Bash 腳本時,有 2 個這樣的工具/庫可以促進這一點getoptgetopts. 這篇文章很好地展示了一些差異,標題為:Bash getopt 與 getopts

使用這些庫通常會以一種很好的方式迫使開發人員使用無破折號 (ie list)、單破折號 (ie ( -lor -list)) 或雙破折號 ( --list) 來實現他們的切換。

Perl、Python、Ruby、C/C++ 等高級語言也有這些類型的庫可供選擇。這只是為了解釋為什麼xinput可以採取任何一個。

引用自:https://unix.stackexchange.com/questions/105364