User-Interface
Unix 子命令名稱是否應該區分大小寫?
像
git
,hg
, 和apt-get
所有的命令都有子命令(有更好的名字嗎?),它們都區分大小寫:hg log # not hg Log git status # not git Status sudo apt-get install nano # not sudo apt-get Install nano
顯然 Unix 中的很多東西都需要區分大小寫,因為Unix 就是這樣。
但在這種情況下,沒有潛在的歧義。這些參數只能是命令名稱,不能是其他任何東西(可以嗎?)。
git
的錯誤消息表明是這種情況:> git Status git: 'Status' is not a git command. See 'git --help'. Did you mean this? status
除了給初學者增加一點挫敗感和符合 Unix 文化之外,還有什麼理由區分大小寫嗎?
有任何理由區分大小寫嗎?
它留下了一個更大的可用命名空間。例如,更高版本的 git 可以實現命令名稱的大寫變體,或者允許使用者定義宏/別名,就像在 shell 中一樣,您可以在其中定義自己的
MV
,CP
等,而無需重新定義mv
,cp
等。
區分大小寫是 POSIX 處理命令和參數的方式的一部分,它與含義無關。
狀態和狀態不一樣是一件非常好的事情,因為系統中的文件系統是區分大小寫的(因為 POSIX 規則)。在整個系統中保持相同的行為通常是一種很好的做法。
因此,例如,如果您的第二個參數可以是文件名或關鍵字,您是否可以認為該關鍵字是否區分大小寫?如果命令有時接受區分大小寫的參數,有時不接受,那將是一團糟。
在我看來,關於關鍵敏感性的最後一件重要的事情是,如果類型
ls -L
你可能已經自己定義了它並且真的想用大寫字母輸入它,L
那麼系統永遠不應該嘗試猜測並總是執行你輸入的內容。