如何抑制 rpm 的通知信息?

如何抑制 rpm 的通知信息?

我需要查询一组软件包的版本。有些软件包可能没有安装在机器上,在这种情况下,我希望它们默默忽略。

不幸的是,rpm -q似乎将请求的输出与诊断混合在一起,stdout而不是像人们期望的那样将后者发送到stderr。例如:

% rpm -q bash notinstalled
bash-4.2.46-19.el7.x86_64
package notinstalled is not installed

使用--quiet标志抑制全部输出,这是毫无用处的......

我知道,我可以用 过滤掉不需要的字符串grep,但我rpm不产生首先。或者,如果必须生成它们,则将它们发送到stderr,然后我可以忽略它,或者直接发送到/dev/null

grep是否有可能避免使用或类似的后期处理?

答案1

RPM(出于歇斯底里的原因)在带内(即在 stdin 上,而不是 stderr 上)返回一些状态/错误。因此建议使用 grep(或正确形成的命令)。

另一种方法是循环 CLI 参数,逐个调用,检查返回代码(但这比 grep 需要更多的编码,ymmv)。

相关内容