
我正在努力消除這個不確定我有關於使用雙破折號(兩個連字符,--)作為選項分隔符的結束(而不是長選項前綴)。當有人讀到長期權是一種GNU約定和長選項以 開頭--
。但這只是與選項結束分隔符。
其使用完全符合IEEE Std 1003.1,2013 實用文法指南 10:
第一個不是選項參數的 -- 參數應該被接受作為指示選項結束的分隔符號。任何後續參數都應被視為操作數,即使它們以“-”字元開頭。
所以人們可以查看rm
手冊頁作業系統X(或者自由BSD),AIX,索拉里斯和高效能使用者體驗系統- 眾所周知的 UNIX '03 註冊的 Unices:
- OSX、AIX 和 Solaris 1
--
逐字引用分隔符男人 rm - HPUX 中沒有討論它男人 rm但還有其他允許使用上述分隔符號的命令(例如
touch
)
有沒有單一的UNIX 03 註冊產品今天哪個不能做rm -- -foo
?是 Solaris...HPUX 嗎?即使他們沒有記錄下來,他們也能做到嗎?我們現在可以將其推廣到這些平台上的所有命令嗎?
1. Solaris 11 手冊在最後的註釋中說: 如果 - - 和 - 都出現在同一命令列上,則第二個被解釋為檔案。前兩個連字符之間有一個空格。它只是連字符還是在這種情況下以連字符開頭的任何東西都會被解釋為文件?
答案1
從 Solaris 10 開始:
~ touch testfile
~ rm -- testfile
~ ls testfile
testfile: No such file or directory
~ touch testfile
~ rm -- -f testfile
-f: No such file or directory
~ ls testfile
testfile: No such file or directory
~ rm - - -f testfile
-: No such file or directory
-f: No such file or directory
testfile: No such file or directory
~
因此,為了回答您的問題,在 Solaris 10 中,如果第二個實例以連字號開頭,則它將被視為檔案。