パイプを使用するタイミングとリダイレクトするタイミングはいつですか?

パイプを使用するタイミングとリダイレクトするタイミングはいつですか?

これは基本的なことですが、それでも疑問に思います。次の 2 つの例を考えてみましょう。

ケース1:

[root@dhcppc0 practice]# cat file1 > wc -l
cat: invalid option -- l
Try `cat --help' for more information.

ケース2:

[root@dhcppc0 practice]# cat file1 | wc -l
7

最初のケースではなぜリダイレクトが機能しないのか疑問に思います。リダイレクトをいつ使用し、パイプをいつ使用すればよいのでしょうか。私は長い間 Linux を使っていますが、それでもこの基本的なことは私を困惑させます。

助けてください。

答え1

リダイレクト演算子は、コマンドをstdoutファイルにストリーミングする ( >) か、ファイルの内容をstdinコマンドにストリーミングする ( <) ために使用されます。

パイプ演算子( |) はプロセスの出力 ( stdout) を次のプロセスの にストリームしますstdin

最初のケースを機能させる唯一の方法は一時ファイルを使用することです。そのため、次の 2 つの手順を実行する必要があります。

cat file1 > tmpfile
wc -l < tmpfile

答え2

ある実行可能ファイルの FD を別の実行可能ファイルの FD に接続する場合はパイプを使用します。実行可能ファイルの FD をファイルに接続する場合はリダイレクトを使用します。

関連情報