シェルスクリプトでコマンドメッセージを隠す

シェルスクリプトでコマンドメッセージを隠す

bashスクリプトでは、conntrack同じツールを使用してtcpdump結果をファイルに出力しますが、コマンド/スクリプトを実行した後にコマンドラインの最初の出力行に表示される標準メッセージを非表示にしたいと思います。

情報:

conntrack v1.0.0 (conntrack-tools): 6 flow entries have been shown.

マニュアルページを読んだ後、bash次のことを試しました。

conntrack -L|grep "dport=6439" &> /tmp/file

どのリダイレクトオプションを試しても、スクリプトを実行しているconntrackシェルにはフローエントリの数を示すメッセージが常に表示されます。tcpdumpキャプチャデバイスとキャプチャされたパケット数などが一覧表示される場所も同じです。

もちろん、clear出力をすばやく隠すためにorコマンドの後に追加することもできますが、その解決策は見苦しいです。conntracktcpdump

そのようなメッセージを隠す方法は?

ベストアンサー1

これらのメッセージは、通常の出力(stdout)ではなくエラー(stderr)として印刷されます。

stderrは送信されず、stdoutのみが送信されます。したがって、&> /tmp/filegrepによると、独自のstdout出力とstderr出力のみをマージし、grepstderrはマージしません。conntrack

たとえば、次のようなものが必要です。

conntrack -L 2>&1 | grep "dport=6439" > /tmp/file

stderr はファイル記述子 2、stdout はファイル記述子 1 です。2>&1stderrをstdoutにマージします。

続行すると、出力がにパイプされる前にマージされ2>&1ます。再マージする必要はありません。conntrackgrepgrep

おすすめ記事