Xinput
為什麼“xinput list”和“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 既是一個操作(想想子命令)又是一個可選參數。
請參閱這些文件,但要意識到程式碼編寫者可以實現他們想要的。事實是,雖然它在技術上是正確的 –list 和 list 可能是以這種方式實現的,以便更多人更容易使用。
切換完全取決於應用程序的開發人員,他們希望如何實現它。但通常他們會受到其他無法控制的事情的限制,例如決定使用一個庫/工具來幫助他們解析命令的命令行參數。
例如,在開發 Bash 腳本時,有 2 個這樣的工具/庫可以促進這一點
getopt
,getopts
. 這篇文章很好地展示了一些差異,標題為:Bash getopt 與 getopts。使用這些庫通常會以一種很好的方式迫使開發人員使用無破折號 (ie
list
)、單破折號 (ie (-l
or-list
)) 或雙破折號 (--list
) 來實現他們的切換。Perl、Python、Ruby、C/C++ 等高級語言也有這些類型的庫可供選擇。這只是為了解釋為什麼
xinput
可以採取任何一個。