首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将stderr重定向到stdout,然后重定向管道(apt-cache)

如何将stderr重定向到stdout,然后重定向管道(apt-cache)
EN

Unix & Linux用户
提问于 2020-10-29 17:22:29
回答 1查看 974关注 0票数 2

我试图将stderr重定向到stdout,然后再重定向pipe,但我认为这里缺少一些基本的东西。

要管道化的命令和输出:

代码语言:javascript
复制
$ apt-cache show contractor
N: Can't select versions from package 'contractor' as it is purely virtual
N: No packages found

Grep不起作用-必须输出到stderr

代码语言:javascript
复制
$ apt-cache show contractor |grep virtual

好的,让我们将stderr重定向到stdout

代码语言:javascript
复制
$ apt-cache show contractor 2>&1 |grep virtual

Nope这不工作,为什么?

确认命令使用的是哪个文件描述符:

代码语言:javascript
复制
$ apt-cache show contractor 1>t ;cat t

$ apt-cache show contractor 2>t ;cat t
N: Can't select versions from package 'contractor' as it is purely virtual
N: No packages found

证实它在使用stderr

和重定向的顺序有关吗?

代码语言:javascript
复制
$ apt-cache show contractor |cat 2>&1

不是

代码语言:javascript
复制
$ apt-cache show contractor 2>&1 |cat 2>&1

不是

如何将stderr重定向到stdout,然后重定向pipe

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-10-29 17:35:16

这是因为当apt-cache的stdout不是tty时,它将变得“安静”,而不会打印这些行。

您可以通过将其“安静”设置为0来覆盖该确定:

代码语言:javascript
复制
$ apt-cache -q=0 show contractor 2>&1 | grep virtual
N: Can't select versions from package 'contractor' as it is purely virtual
票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/617073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档