誰かがこのコマンドで何が起こっているのか説明できますか?
echo foo >&2 | grep foo
Zsh(5.0.2)はfoo
2回印刷します。次のコマンドを実行した後、1つは標準出力として表示され、もう1つは標準エラーとして表示されます。
{ echo foo >&2 | grep foo } >/dev/null
そして:
{ echo foo >&2 | grep foo } 2>/dev/null
両方ともfoo
一度だけ印刷されます。
答え1
これが効果です多数。
echo foo >&2 | grep foo
foo
stderrに書き込まれ、にfoo
パイプされますgrep
。 stderrはデフォルトで端末に接続されているため、それぞれfoo
に1つ、echo
結果に1つ、2行が表示されますgrep
。
{ echo foo >&2 | grep foo } >/dev/null
stdoutがにリダイレクトされたため、ここに行が表示されます。の行のみ/dev/null
が表示されます。foo
echo
{ echo foo >&2 | grep foo } 2>/dev/null
ここでは、stderrがにリダイレクトされているので、1行を見ることができ、その行だけを見ることができます/dev/null
。foo
grep
ライン出力色により、端末の違いを簡単に知ることができます。grep
一致するパターンが強調表示されます(または強制的に使用可能--color=always
)。
MULTIOS
デフォルトでは有効ですが、nomultios
オプションは設定されていません。
$ unsetopt | grep nomultios
nomultios
無効にするには、nomultios
次のオプションを設定します。
$ setopt nomultios