回答:
この場合、「標準入力」を意味します。tarファイル引数が必要で、代わりにstdinを使用する必要がある場合、一部のソフトウェア(例)で使用されます。これはシェル構造ではなく、使用しているプログラムによって異なります。疑問がある場合は、マンページを確認してください!
この場合、標準入力は-fオプションの引数です。-がサポートされていない場合は、tar xvf /proc/self/fd/0またはのようなものを使用tar xvf /dev/stdinして回避できます(後者はさまざまな大学で広くサポートされています)。
「標準入力」を一般的に意味するためにこれに依存しないでください。それはシェルによって解釈されないため、すべてのプログラムは自由に処理できます。場合によっては、それは標準出力またはまったく異なるものです:suそれは「ログインシェルを開始する」ことを意味します。それ以外の場合は、まったく解釈されません。マッスルメモリを-使用すると、以前使用したプログラムのバージョンがダッシュを理解できなかったため、かなり多くのファイルが作成されました。
STDOUTコンテキストに応じて、を意味することもあります。
/dev/stdinまたは/dev/stdout、本当に入出力ストリームが必要な場合に使用できます。これはストリームであることに注意してください。ファイルをシークしたいプログラムは、-(たとえばffmpeg)
bash、ハイフンはシェルによって解釈されます。Advanced Bash-Scripting Guide-Chapter 3. Special Charactersを参照して、テキスト[dash]または「redirect from / to stdin or stdout」を検索してください。を使用bashすると、ファイル名を期待するほとんどの場所でハイフンを使用できます。<|を補完するものです。>私見
catハンドル-(マンページを確認)。シェル組み込みバージョンのcat場合はそうかもしれませんが、それは厳密にはシェル全体ではありません。また、シェルがを処理した場合、-echo -と言うことができ、他の何かに展開されます。代わりに、ダッシュをエコーします(/dev/stdinまたはではありません/proc/self/fd/0)。とecho test > -呼ばれるファイルを作成するだけな-ので、明らかにそこでも処理されません。ああ、そしてあなたがリストしたページは、それがシェルによって処理されているとは言っていません。catそしてdiff、あなたはそれをand とともに使用できると言っています。どちらも明示的にダッシュを理解します。
この場合、-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明示的に呼び出す必要はありません。
tarにzオプションがあるわけではありません。
tarは、歴史的な理由により、デフォルトで最初のテープドライブを使用しています。
/dev/sa0になっています(FreeBSD 9.0、/dev/rst0NetBSD 6.0、およびOpenBSD 5.1)。AIX 7.1のデフォルトは/dev/rmt0です。MINIX3のデフォルトは/dev/sa0です。(それぞれ最新のOSバージョンをチェックしましたが、これらは「古いメインフレーム」ではありません。)Solarisは、のファイルを使用して構成できます。/etcデフォルトはテープドライブです。GNU tar、シリングtar、OSX、およびBusyBoxのデフォルトはstdin / stdoutです。
tarデフォルトで2番目のテープドライブに再コンパイルしました。:)
-すべき小さな詳細:コマンドの最後にある必要はありません。例:ls -l | diff - /old_ls_output.txt。