回答:
それはとは何の関係もないのですgrep
-パイプがあるため、それはだ|
、標準出力ストリームをリダイレクトするstdout
のに対し、Permission denied
メッセージは標準エラーストリームですstderr
。あなたが使用してストリームを組み合わせることによって、欲しい結果達成できる2>&1
(そのファイルディスクリプタであるストリームリダイレクト2
そのファイルディスクリプタであるストリームにする1
ように)それstderr
だけでなく、としてstdout
のgrepコマンドの入力にパイプます
find / -name libGL.so.1 2>&1 | grep -v 'denied'
しかし、それを単にstderr
リダイレクトすることによって完全に破棄するのがより一般的です/dev/null
find / -name libGL.so.1 2>/dev/null
Bashのmanページを見ると、この宣伝文句に気付くでしょう。
場合
|&
に使用され、コマンドの標準誤差は、配管を介してコマンド2の標準入力に接続されています。それは略記です2>&1 |
。
したがって、STDERRとSTDOUTを結合する場合も、この構成を使用できます。
find / -name libGL.so.1 |& grep -v 'denied'
「permission denied」行はstderr(標準エラー)ストリームに送られますが、grepを介してstdout(標準出力)をパイピングしています。
でstderrを完全にリダイレクトできます
find / -name libGL.so.1 2> /dev/null
/foo/bar/denied/libGL.so.1
、組み合わせるstdout
とstderr
、その後フィルタリングは結果を非表示にします