小编Mar*_*ton的帖子

为什么有些 linux 工具默认写入 STDERR 而不是 STDOUT?

为什么某些 Linux 实用程序将“正常”操作的输出发送到 STDERR 而不是 STDOUT?

例如,当我运行以下命令时(在 CentOS 7.3 中):

/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg 1> /dev/null ; echo $?
Run Code Online (Sandbox Code Playgroud)

即使退出状态为零并且没有错误,我也能在 TTY 上看到输出。

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-1ef39414718640fe9f6ec0f6d65fdc3e
Found initrd image: /boot/initramfs-0-rescue-1ef39414718640fe9f6ec0f6d65fdc3e.img
done
0
Run Code Online (Sandbox Code Playgroud)

我注意到一些其他程序也这样做。想知道是否有一些好的解释。

作为参考,我需要在 RPM %post 脚本中调用这一行,我想将“正常”输出重定向到/dev/null并仅捕获真正的“错误”类型消息。此特定命令不提供-q quiet开关。

io-redirection

7
推荐指数
1
解决办法
661
查看次数

转储 RPM 宏中的“-14”是什么意思

使用以下方法创建 RPM 规范文件时,可以转储可用/定义的宏:

rpm --showrc 或者 rpm --eval %dump

或者%dump在规范文件本身中包含内置宏并检查 RPM 构建过程的输出(构建输出包含宏定义)。

在任何一种情况下,某些行都以“-14”或“-11”为前缀。没有两者的行似乎是多行定义的主体。

此输出中的“-14”(或不太常见的“-11”)有什么意义?更重要的是,我有兴趣知道记录在哪里。

示例输出:

-14: __autoconf autoconf
-14: __autoheader   autoheader
-14: __automake automake
-11= _target_cpu    x86_64
-11= _target_os linux
Run Code Online (Sandbox Code Playgroud)

参考:

rpm rhel rpm-spec

6
推荐指数
1
解决办法
465
查看次数

什么 lspci 命令行开关将输出限制为仅“以太网”设备?

尝试查看是否可以限制lspci命令的输出以仅显示以太网设备。该-d开关似乎应该可以工作,但我尝试过的任何方法都无法完成工作。例如:

lspci -d '*:*:02'
Run Code Online (Sandbox Code Playgroud)

仍然显示所有PCI 设备类别。我使用02这里找到的值作为类:http://pci-ids.ucw.cz/read/PD/02

作为参考,这里是交换机的“man lspci”信息-d

-d [<供应商>]:[<设备>][:<类>] 仅显示具有指定供应商、设备和类 ID 的设备。ID 以十六进制给出,可以省略或给出为“*”,两者均表示“任何值”。

我目前正在使用 grep 来过滤输出,这样就完成了工作:

lspci -vv | grep -A20 Ethernet
Run Code Online (Sandbox Code Playgroud)

linux pci

5
推荐指数
2
解决办法
6084
查看次数

标签 统计

io-redirection ×1

linux ×1

pci ×1

rhel ×1

rpm ×1

rpm-spec ×1