たとえば、tar -xjvfの代わりにtar -xvfを使用してtar.bz2ファイルを抽出します。
tar -xvf file.tar.bz2
tar: invalid tar magic
そして、stderrをリダイレクトする場合
tar -xvf file.tar.bz2 2>/dev/null
できます。
パイプを使用すると
tar -xvf file.tar.bz2 | grep "something" 2>/dev/null
tar: invalid tar magic
ここで、最初のコマンドが失敗した場合、エラーを抑制することはできません。
このように抑制する方法はありますか
tar
とgrep
の両方のSTDERRのリダイレクトを伴ういくつかの選択肢があります。
bash
コマンドグルーピング{}
を使用します。
{ tar -xvf file.tar.bz2 | grep "something" ;} 2>/dev/null
サブシェル()
の使用:
( tar -xvf file.tar.bz2 | grep "something" ) 2>/dev/null
単一のプロセスのSTDERRをリダイレクトする場合は、代わりに Oliの答え を使用することをお勧めします。
別の注意として、grep
のSTDOUTとSTDERRの両方をtar
したい場合は、次を使用します。
tar -xvf file.tar.bz2 |& grep "something"
これにより、tar
のSTDERRも使い尽くされます。
これは実際には次の短縮形です。
tar -xvf file.tar.bz2 2>&1 | grep "something"
パイプはコマンド内で個別の句を形成するため、リダイレクトは...
tar -xvf file.tar.bz2 | grep "something" 2>/dev/null
... grep
ではなく、tar
からSTDERRをリダイレクトしています。
修正するには、単にtar
コマンドでリダイレクトが行われるように、順序を変更します。
tar -xvf file.tar.bz2 2>/dev/null | grep "something"