我有一个命令:mywritercmd -f /tmp/test 2>&1 > log.txt
我在 bash 终端中运行,命令返回error: could not open output file "/tmp/test": Permission denied
不过,此错误消息并未写入log.txt文件中,它保持为空...
为什么?
我猜想这条消息应该先发送到 stderr,然后再发送到文件中,但不知何故它不是。
我有一个命令:mywritercmd -f /tmp/test 2>&1 > log.txt
我在 bash 终端中运行,命令返回error: could not open output file "/tmp/test": Permission denied
不过,此错误消息并未写入log.txt文件中,它保持为空...
我猜想这条消息应该先发送到 stderr,然后再发送到文件中,但不知何故它不是。
排序导致差异。命令行从左到右进行评估。当它到达
2>&1
时,指令是将 stderr 传递到 stdout 所在的任何地方。此时,该> log.txt
部分尚未评估。结果,stderr 保持默认,即输出到终端。mywritercmd -f /tmp/test > log.txt 2>&1
将导致您想要的行为,并导致将错误消息写入 log.txt 文件。