如何在 Linux 中重定向命令的所有输出

如何在 Linux 中重定向命令的所有输出

我正在运行 Gentoo Linux。程序 ( equery) 输出所有当前安装的软件包的大量列表 ( equery list "*")。我想找出其中哪些是不稳定的。Equery 在软件包名称前用 [ ~] 标记不稳定的软件包。问题是,只有当输出未重定向到任何地方(在终端中)时,才会发生这种情况。当我尝试 grepping 输出 ( equery list "*" | grep "~") 或将其重定向到文件(包括 stderr ( equery list "*" &> eql.txt))时,该信息不会被重定向 - 只有软件包的名称。

那么,如何重定向程序的所有输出?

答案1

尝试使用以下方式包装 equery 命令解除缓冲

unbuffer equery list "*" | grep "-"

unbuffer 命令使其参数程序认为它已连接到终端。您可能需要为参数添加另一层引用"*"

答案2

equery -N关闭管道检测。

所以equery -N list '*' | grep '~'应该做好这个工作。

相关内容