2>&1 ではパイプラインは具体的にどのように機能しますか?

2>&1 ではパイプラインは具体的にどのように機能しますか?

UNIX を学び始めたばかりなので、この質問は本当に初心者のように思われるかもしれませんが、回答をいただければ幸いです。Google の助けを借りて、すでに 1 時間自力で解決しようとしていますが、成功していません。

cat /etc/shadow 2>&1 | wc -l

このコマンドの効果は何でしょうか? 私の推測は次のとおりです:

  1. このコマンドは、行数「/etc/shadow」の場合、標準エラーがある場合は標準出力にリダイレクトされ、エラー行がカウントされます。
  2. このコマンドは、ファイル「/etc/shadow」の場合、標準エラーがある場合は標準出力にリダイレクトされ、エラーの行がカウントされます。

答え1

X>&Yファイル記述子のリダイレクト: これは、fdへのすべての出力X実はY. に入ると2>&1、STDERR の出力が STDOUT にスローされます。


wc -l入力行数を STDOUT に書き込みます。


一緒に、コマンドはcat /etc/shadow 2>&1 | wc -lの行数を返します/etc/shadow同様にエラー行の数。

もし、あんたがしないエラー行をカウントしたい場合は、 を使用しますcat /etc/shadow | wc -l

答え2

これは直接的な答えではありません。

実験をすることを妨げているものは何ですか?

実験を行った場合、自分自身の疑問に答えられるかもしれません。

さまざまなコマンドの組み合わせを実行します。

cat /etc/shadow
cat /etc/shadows

cat /etc/shadow  2>&1
cat /etc/shadows 2>&1

そしてそれぞれをパイプでwc

cat /etc/shadow    |  wc

などなど。

関連情報