現時点で rm -- -foo を実行できない '03 登録済み UNIX は 1 つもありませんか?

現時点で rm -- -foo を実行できない '03 登録済み UNIX は 1 つもありませんか?

私はこれを払拭しようとしている不確実性私は使用について二重ダッシュ(2つのハイフン、--)をオプションの区切り文字として使用します(長いオプションプレフィックス)。ロングオプションはGNU慣例と長いオプションは で始まります--。しかし、これはオプション終了デリミタ

の使用は完全に準拠していますIEEE Std 1003.1、2013 ユーティリティ構文ガイドライン 10:

オプション引数ではない最初の -- 引数は、オプションの終了を示す区切り文字として受け入れられます。後続の引数は、'-' 文字で始まっていても、オペランドとして扱われます。

そこで、manページを見てみるrmと、OSX(またはフリーBSD)、エイエックスソラリスそしてHPUX- よく知られている UNIX '03 登録済み Unix:

  • OSX、AIX、Solaris 1--では、区切り文字をそのまま参照します。男 rm
  • HPUXではこれについては議論されていない男 rmしかし、他のコマンドでは、この区切り文字を使用できます(例:touch

シングルはありますか?ユニックス03 登録製品現在ではできないことは何ですかrm -- -foo? Solaris ですか... HPUX ですか? ドキュメント化されていなくても実行できますか? 現時点で、これらのプラットフォームのすべてのコマンドにこれを一般化できますか?


1. Solaris 11 マニュアルの最後の注記には次のように書かれています。 - - と - の両方が同じコマンド ラインに表示された場合は、2 番目がファイルとして解釈されます。最初の 2 つのハイフンの間にはスペースがあります。このコンテキストでファイルとして解釈されるのはハイフンだけでしょうか、それともハイフンで始まるものすべてでしょうか?

答え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 では、2 番目のインスタンスがハイフンで始まる場合、それはファイルとして扱われます。

関連情報