微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash 和 zsh:>&1 不会将 stderr 输出重定向到 stdout 但 2>&1 会吗?

如何解决bash 和 zsh:>&1 不会将 stderr 输出重定向到 stdout 但 2>&1 会吗?

ffmpeg 倾向于将错误输出到 &2 或 stderr,因此我可以将其重定向到 &1 或 stdout。

但是,我注意到使用 2>&1>&1 进行重定向之间存在奇怪的区别。我认为后者会将 一切 重定向到 &1,或者这是一个错误

示例:

ffmpeg --help | grep version

显示了一些不包含“版本”的行,显然这是 ffmpeg 发送到 &2 的内容

下一步:

ffmpeg --help 2>&1 | grep version

按预期工作:它只显示包含“版本”的几行。

然而:

ffmpeg --help >&1 | grep version

没有按预期工作,我得到与上面第一个示例相同的输出(没有重定向的那个)。

在这里遗漏了什么?

请注意,这与 ffmpeg 无关,我只是以 ffmpeg 为例,因为它倾向于向 stdout 和 stderr 输出不同的内容

附言我使用的是 macOS 10.15.6 Catalina,在 zsh 和 bash 中也会出现相同的行为。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。