2017-10-20 12 views
2

bashでunzipコマンドを使用すると、端末で多くの出力が作成されます。 -qオプションまたは-qq( "より静かな" - UNZIP MAN)オプションを使用すると、出力を抑えることができます。しかし、いつもプロセスの終わりにはまだ10 archives were successfully processedのようなメッセージがあります(そしてその前に空の行があります)。アーカイブを解凍する方法「アーカイブは正常に処理されました」出力

とき、私は、出力STDOUTそれはまだ、端末ではなく、ファイルに出力される

unzip -qq files2zip.zip 1> stdoutput.txt 

などのファイルにあるため、このメッセージは、STDERRからであるように思えます。 STDERR(つまり2> stderror.txt)をファイルに出力すると、そのファイルに出力されます。

私のスクリプトでは、画面にエラーが表示されるようにしたいが、このメッセージが表示されないようにしたい。だから、エラーの出力を失うことなくこのメッセージを抑止する方法はありますか(私はstderrをファイルに出力したくありません)?

+0

を使用することができますか? UbuntuディストリビューションのDebian *によるUnzip 6.00もRed HatのInfo-ZIP *によるUnZip 6.00もこのメッセージを表示しません。 –

+0

'man unzip'はそれがv6.0であると伝えます。私はUbuntuにあります。私はちょうどapt-get(私が正しく覚えていれば)を使ってインストールしたと思います。 –

答えて

1

あなたはprocのサブあなたがunzip` `のバージョンは何がありますか

unzip -qq files2zip.zip 2> >(grep -v "were successfully processed") 
+0

ありがとう、それは確かにトリックを行います。私は似たようなことを試みましたが、正しい配管を得られませんでした。それで2番目の '>'は何ですか?そしてgrepを使ってメッセージの上の空行を取り除く方法はありますか? –

+0

@LuKas '2>' STDOUTファイルディスクリプタを次のものにオープンし、 '>()'はこのデータストリームをファイルのようにプロセスに送ることができます。 [ここ](https://www.gnu.org/software/bash/manual/html_node/Process-Substitution.html)を参照してください。 – 123

0

標準エラー出力と標準出力以外に3番目の出力はありません。したがって、あなたができる最良の方法は、前の行に加えて、stderrから不要なメッセージをフィルタすることです。これは、unzipの構造化された出力を想定しているため、簡単に破損する可能性があります。このような何か:

unzip file.zip 2> >(head --lines=-2) 
+0

しかし、(実際の)エラーが端末に表示されることを望みます。 –

関連する問題