私はこのシンボルを常に見ていますが、私の本ではまだその意味を明確にしていません。マニュアルページもウェブ検索も、これについては明確に説明していません。最初はI / O記号だと思いましたが、使用しようとしましたが機能しませんでした。
たとえば、patch
Man and Info ドキュメントには次のように記載されています。
「-i PATCHFILE」または「--input=PATCHFILE」オプションを使用して、パッチを読み取る場所を指定することもできます。 PATCHFILEを指定しない場合、またはPATCHFILEがの場合、
'-'
「path」は標準入力(たとえば「diff」出力)からパッチを読み取ります。
「-」記号を見るたびに、ほぼ常に(ある時点で)標準入力への参照が続きます。
私がここで何を見逃しているのでしょうか?記号は標準入力を表しますか? Bashコンテキストでは、「-」は何を意味しますか?
答え1
-
Bashはパラメータをまったく解釈しません。これは多くのプログラムで実装する慣例にすぎません。
通常、プログラムはファイルを正常に処理するときにこれを見ることができるので、ファイルを処理しようとしているときに使用するファイル名ではなく、いくつかのテキスト文字列を期待します。stdin
/stdout
代わりに。
-
標準であるため、意図的に名前付きファイルがあるシステムに触れる可能性はほとんどありません。オプション文字Unixで。しかし、実際にはファイル名を指定するのは正当であるため-
(一般的にはどのファイルでも)スタートwith — パラメータを-
理解する多くのプログラム-
返品--
「処理停止オプション」を意味するオプションを理解してください。これにより、次のファイルの削除などの操作を実行できます-
。
$ rm -- -
答え2
私が知る限り、これはbash設定ではなくルールです。アプリケーション-
は、実際のファイルの代わりにstdinから読み取るか、stdoutに書き込むか、/dev/stdin /dev/stdoutに書き込むかを示すために使用されます。