User-Interface

Unix 子命令名稱是否應該區分大小寫?

  • March 26, 2014

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那麼系統永遠不應該嘗試猜測並總是執行你輸入的內容。

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