ハイフンの有無のコマンドオプション

ハイフンの有無のコマンドオプション

Linuxユーザーの一部のコマンドがハイフンで実行され、他のコマンドが実行されないのはなぜですか?

たとえば、コントラストまたはls -lrm -rps axtar xvf

歴史的理由があると思うが意味は同じなので統一すればいいのでしょうか?

答え1

これを行うには、ユニックスの味がさまざまであった* nixの歴史に戻る必要があります。特にPOSIX / Unixスタイルを使用する場合やBSDを使用しない場合は、オプションがまったく異なるpsため、毛深いです。-Unix戦争読み始めるのに便利なWikipediaのページです。

編集する:Unixの歴史あなたも興味があるかもしれません。

答え2

ダッシュのないコマンドラインオプション(例tar)は、あまりにも多くのアプリケーションが依存しているため削除できない従来のコマンドラインフラグddです。ps

OpenBSD マニュアルtar以前のスタイルオプションを「レガシー」オプションと呼びますが、この古い構文を説明するために「パックオプション」または「ボックスオプション」(または同様のもの)という名前を見たことがあります。

ddダッシュではなくオプションを継承します。JCL(作業制御言語)IBMメインフレームから。

これらのユーティリティの中には破線のオプションもあります。POSIX仕様psレガシーオプションへの言及はまったくありません。 仕様dd「オプション」の代わりに「オペランド」をリストし、tarPOSIXによってまったく標準化されていません(標準アーカイバーはいpax)。

また、最新のユーティリティはダッシュではなくオプション(またはオペランド)を使用して実行するアクションを決定します。たとえば、次のようになりますgit commit -plxc exec

これは実際の「アクション」と非常によく似ていますtar。 ~からオリジナルtarマニュアルUnixバージョン7:

tar テープにファイルを保存して復元します。その操作は key パラメータによって制御されます。例 key 最大1文字の文字列機能文字そして1つ以上があるかもしれません機能修飾子

psUnixリリース3のオリジナル実装持つ点線オプション(ここではマニュアルセクションは管理ユーティリティセクションである1ではなく8です。)次のバージョンではそれはそれらを失う


注:テキスト全体で「オプション」と「オペランド」という用語を混在させます。技術的には、「オプション」はダッシュを含む単一の文字または文字です(例:)。-a一方、「オペランド」はオプションではありません。ただし、どちらもコマンドラインパラメータです。

関連情報