コマンドの末尾のダッシュ「-」はどういう意味ですか?

コマンドの末尾のダッシュ「-」はどういう意味ですか?

次のコマンドを実行します。

gzip -dc /cdrom/cdrom0/file.tar.gz | tar xvf –

コマンドの末尾にある はどういう-意味ですか? 何らかのプレースホルダーですか?

答え1

この場合は、「標準入力」を意味します。これは、tarファイル引数が必要で、代わりに stdin を使用する必要がある場合に、一部のソフトウェア (例 ) によって使用されます。これはシェル構造ではなく、使用しているプログラムによって異なります。疑問がある場合は、man ページを確認してください。

この例では、標準入力がオプションの引数になります-f。 がサポートされていない場合は、または の-ようなものを使用してもかまいません(後者はさまざまな unice で広くサポートされています)。tar xvf /proc/self/fd/0tar xvf /dev/stdin

これを「標準入力」として普遍的に使用しないでください。シェルによって解釈されないため、すべてのプログラムが自由に処理できます。場合によっては、標準入力である場合もあります。出力または、まったく異なる意味になります。on は「ログイン シェルを起動する」という意味です。それ以外の場合は、まったく解釈されません。筋肉の記憶により、私が慣れ親しんだプログラムのバージョンによってはダッシュが理解されないため、su名前の付いたファイルをかなり作成しました。-

答え2

この場合、-Linux を実行していると仮定すると、 は実際にはほとんど役に立ちません。

GNU tar(Linux版)はデフォルトで標準入力からの入力を受け付けます。ないこの動作を希望し、ファイル名をコマンドライン引数として渡したい場合は、フラグを指定する必要がありますf

tar xf filename

これは同じです

tar x < filename

または、入力が例のように gzip 圧縮されている場合:

gzip -dc filename | tar x

ここでフラグを指定することにはまったく意味がありませfんが、指定されたため、-標準入力から読み取ることを示すためにファイル名を指定する必要があります (他の回答を参照)。したがって、繰り返しますが、これは冗長であり、少し奇妙です。

gzipさらに、次のフラグを指定することによって、GNU tar に入力を自身でストリームするように指示できるため、上記の行を簡略化できますz

tar xfz filename

– 明示的に呼び出す必要はありませんgzip

関連情報