So leiten Sie die gesamte Ausgabe eines Befehls in Linux um

So leiten Sie die gesamte Ausgabe eines Befehls in Linux um

Ich verwende Gentoo Linux. Ein Programm ( equery) gibt eine umfangreiche Liste aller aktuell installierten Pakete aus ( equery list "*"). Ich möchte herausfinden, welche davon instabil sind. Equery kennzeichnet die instabilen Pakete mit [ ~] vor dem Paketnamen. Das Problem ist, dass dies nur dann passiert, wenn die Ausgabe nirgendwohin umgeleitet wird – im Terminal. Wenn ich versuche, die Ausgabe zu greppen ( equery list "*" | grep "~") oder in eine Datei umzuleiten, einschließlich stderr ( equery list "*" &> eql.txt), werden diese Informationen nicht umgeleitet – nur die Namen der Pakete.

Also, wie leite ich die GESAMTE Ausgabe eines Programms um?

Antwort1

Versuchen Sie, Ihren equery-Befehl mitPufferung aufheben.

unbuffer equery list "*" | grep "-"

Der Befehl „unbuffer“ lässt sein Argumentprogramm glauben, dass es mit einem Terminal verbunden ist. Möglicherweise müssen Sie dem Argument eine weitere Anführungszeichenebene hinzufügen "*".

Antwort2

equery -Nschaltet die Rohrerkennung aus.

Sollte also equery -N list '*' | grep '~'funktionieren.

verwandte Informationen