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 (将#修改为@)