Linux でコマンドからのすべての出力をリダイレクトする方法

Linux でコマンドからのすべての出力をリダイレクトする方法

Gentoo Linux を実行しています。プログラム ( equery) は、現在インストールされているすべてのパッケージ ( equery list "*") の膨大なリストを出力します。そのうちのどれが不安定なのかを知りたいです。Equery は、不安定なパッケージをパッケージ名の前に [ ~] でマークします。問題は、出力がターミナル内のどこにもリダイレクトされていない場合にのみ発生することです。出力 ( equery list "*" | grep "~") を grep したり、stderr ( ) を含むファイルにリダイレクトしたりしても、equery list "*" &> eql.txtその情報はリダイレクトされず、パッケージ名だけがリダイレクトされます。

では、プログラムからのすべての出力をリダイレクトするにはどうすればよいでしょうか?

答え1

equeryコマンドを次のようにラップしてみてくださいアンバッファ

unbuffer equery list "*" | grep "-"

unbuffer コマンドは、引数プログラムに端末に接続されていると認識させます。"*"引数に別のレベルの引用符を追加する必要があるかもしれません。

答え2

equery -Nパイプ検出をオフにします。

それでequery -N list '*' | grep '~'仕事はできるはずです。

関連情報