当我执行时less package.rpm,less 会向我显示有关包的各种元信息。什么不太准确 - 它是否内置了能够提取元信息的代码,或者是以第一部分看起来像文本文件的方式构建的 rpm?
我会假设前者,因为head在这里不是很有帮助。但要解决真正的问题:如果我想grep通过这个元数据少向我展示,我该如何做到这一点?
Dan*_*i_l 23
如果您浏览less手册页,您会注意到less有一个 INPUT PREPROCESSOR 功能。
echo $LESSOPEN查看此预处理器的位置,和使用less/ vim/cat以查看其内容。
在我的机器上,这个预处理器/usr/bin/lesspipe.sh包含以下内容:
*.rpm) rpm -qpivl --changelog -- "$1"; handle_exit_status $?
Run Code Online (Sandbox Code Playgroud)
实际上,less将文件打开到rpm,并向您显示其输出的分页。
显然,要查看此信息,只需直接 grep rpm 的输出:
grep "foo" < <(rpm -qpivl --changelog -- bar.rpm)
Run Code Online (Sandbox Code Playgroud)
或者一般情况下(感谢 OrangeDog)
grep "foo" < <(lesspipe.sh bar.rpm)
Run Code Online (Sandbox Code Playgroud)
注意: $LESSOPEN不只是保存位置lesspipe.sh- 它以 a 开头并以 a|结尾,%s因此直接调用它会导致错误。
| 归档时间: |
|
| 查看次数: |
2640 次 |
| 最近记录: |