Posix

雙破折號仍然是長開關的 posix 標準嗎?

  • April 25, 2014

我讀過幾個關於雙破折號的問題:

單字元選項的單破折號,但單詞的-雙破折號?--(雙破折號)是什麼意思

--(也稱為“裸雙破折號”)

但是,我記得 4 年前一位老師告訴我這--是處理長開關(如--helpor )的正確方式--color=

今天,我使用了很多根本不遵守這條規則的命令,我能想到的最好的例子是find即使非常煩人的AIX find.

我的老師錯了嗎?還是規則改變了(這似乎不太可能)?最後,關於選項和或的長度

是否有任何規則?posix``-``--

我認為POSIX 沒有定義長選項

準則 3:每個選項名稱應該是可

移植字元集中的單個字母數字字元(alnum 字元分類)。-W(大寫-W)選項應保留給供應商選項。

不應允許多位選項。

雙破折號是 GNU 約定

find 的 POSIX 定義中,帶有單破折號的“長開關”不是選項的一部分,而是作為操作數給出的表達式。

find似乎是規則的例外。實際上find起源於 Unix 的初始實用程序開發人員組之外,因此它不符合使用“長”選項的方式。

通常,只有在使用短選項和長選項成為大多數程序中的常見做法後,才會進行標準化,部分原因是某些常式或庫可用於進行選項解析(從而強制執行一些非顯式標準)。但當然,當時以不會破壞腳本的方式更改現有程序(例如)為時已晚。find使用雙破折號的 POSIX 合規性不如不破壞這些腳本重要。

例如,向後兼容性也是為什麼tar可以使用或不使用破折號來指定短選項的原因。

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