首页 > 解决方案 > stderr 重定向的奇怪行为

问题描述

我试图使用sh/bash重定向某个程序的所有输出,并注意到:

prog &>all.log工作正常(所有输出都被重定向到文件)

prog 2>err.log >out.log也可以按预期工作(程序的输出被分成 2 个文件)

但是,如果我prog 2>&1 >all.log仅将其作为文本运行,则从上一个示例转到 out.log 将转到该文件。其余的打印到控制台。换句话说,与prog >out.log(如果我完全省略2>&1)相比,行为没有区别。

我只是摸不着头脑,试图理解为什么2>在文件的情况下有效,但对&1. 虽然&>也可以按预期工作。有人可以向我解释吗?

标签: bashshellstdoutio-redirectionstderr

解决方案


推荐阅读