为什么 stderr 中没有“权限被拒绝”?

为什么 stderr 中没有“权限被拒绝”?

我有一个命令:mywritercmd -f /tmp/test 2>&1 > log.txt我在 bash 终端中运行,命令返回error: could not open output file "/tmp/test": Permission denied

然而,这个错误消息并没有写在日志.txt文件,它保持空...

为什么?

我猜想这条消息应该发送到 stderr,然后发送到文件中,但不知何故它没有。

答案1

排序会导致差异。命令行从左到右进行评估。当它到达 时2>&1,指令是将 stderr 传递到 stdout 所在的地方。目前,该> log.txt部件尚未进行评估。结果,stderr 保持默认状态,即输出到终端。

mywritercmd -f /tmp/test > log.txt 2>&1将导致您想要的行为,并导致错误消息写入 log.txt 文件。

相关内容