非常奇怪的重定向 stdout 和 stderr 问题有人可以解释一下吗?

发布于 2024-12-06 21:34:50 字数 310 浏览 0 评论 0原文

我有两个调用产生非常不同的输出:

调用一:

dmake -m _makefile_.m  1>> _results.out 2>> _results.out

调用二:

dmake -m _makefile_.m >2&1 >_results.out

dmake 进行某种编译,第一个调用正确内联编译错误,而第二个调用将所有编译错误放在顶部。我一直认为这两者是等效的。这两个调用到底有什么区别?这是因为缓冲吗?

I have two calls that produce very different output:

Call one:

dmake -m _makefile_.m  1>> _results.out 2>> _results.out

Call two:

dmake -m _makefile_.m >2&1 >_results.out

dmake does a compile of sorts and the first call correctly inlines compile errors whereas the second one puts all the compile errors at the top. I was always of the opinion that both of these were equivalent. What exactly are the differences between these two calls? Is this because of buffering?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

何以笙箫默 2024-12-13 21:34:50

>2&1 语法不正确;它将把 dmake 命令的输出重定向到名为 2 的文件(在后台运行),然后尝试运行名为 1 的命令其输出重定向到 _results.out

您需要:

dmake -m _makefile_.m >_results.out 2>&1

如果要附加到文件,请将 > 更改为 >>

我不确定这是否会按照您想要的方式分散 stdout 和 stderr 。

>2&1 is not the right syntax; it will redirect the output of the dmake command to a file called 2 (running it in background), then attempt to run a command called 1 with its output redirected to _results.out.

You want:

dmake -m _makefile_.m >_results.out 2>&1

Change > to >> if you want to append to the file.

I'm not 100% sure whether this will intersperse stdout and stderr the way you want.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文