![2>&1 ではパイプラインは具体的にどのように機能しますか?](https://rvso.com/image/168803/2%3E%261%20%E3%81%A7%E3%81%AF%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AF%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AB%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
UNIX を学び始めたばかりなので、この質問は本当に初心者のように思われるかもしれませんが、回答をいただければ幸いです。Google の助けを借りて、すでに 1 時間自力で解決しようとしていますが、成功していません。
cat /etc/shadow 2>&1 | wc -l
このコマンドの効果は何でしょうか? 私の推測は次のとおりです:
- このコマンドは、行数「/etc/shadow」の場合、標準エラーがある場合は標準出力にリダイレクトされ、エラー行がカウントされます。
- このコマンドは、ファイル「/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
などなど。