ファイルを入力するさまざまな方法

ファイルを入力するさまざまな方法

次のコマンドの違いは何ですか?

$ input.txt > grep foo

$ grep foo < input.txt

$ cat input.txt | grep foo

$ grep foo input.txt

そしてそれだけではありませんgrep。他の命令も同じだ。

ベストアンサー1

  1. input.txt > grep foo これはバグかもしれません。それは働く注文する input.txtそして、出力をというファイルにリダイレクトしますgrep。これはfooコマンドの引数ですinput.txt

  2. grep foo < input.txtfoo入力で文字列を見つけますinput.txtgrepコマンドラインからファイル名を取得しないため、標準入力で機能します。シェルはファイルの内容input.txtgrep

  3. cat input.txt | grep foo これは以前と似ていますが、標準入力ストリームはコマンドがファイルの内容を渡すパイプgrepに接続されます。このコマンドは、標準入力ストリームにパイプされた標準出力ストリームに書き込みます。catinput.txtcatgrep

  4. grep foo input.txt その後、grepファイルが開き、その中の文字列をinput.txt見つけます。foo標準入力ストリームを使用しません。

一般的に言うと:

  • Pipe( |) は、左側の標準出力ストリームを右側の標準入力ストリームに関連付けます。

  • InputRedirect( <) はファイルから標準入力ストリームにリダイレクトします。

  • OutputRedirect( >) は標準出力をファイルにリダイレクトします。

  • 入力ストリームと出力ストリームは、たとえばを使用して同時にリダイレクトでき、commandname <inputfile >outputfileコマンドはパイプに読み書きできますcommand1 | command2 | command3

  • リダイレクトとパイプを組み合わせることができますcat <input.txt | grep foo >output.txt

多くのUnixユーティリティは、入力ファイル名をオプションの引数として使用します。ファイル名が指定されていない場合は、標準入力が使用されます。

一部のUnixユーティリティただ標準入力(例tr:。

Bashやその他のシェル(例ksh:<<<"string"ここにある文字列)、ほとんどのシェルは理解していますここのドキュメント(これを見つけてください)。

おすすめ記事