stdout 和 stderr 的重定向

stdout 和 stderr 的重定向

我想将已执行文件 (file_1.txt) 的 stdout 和 stderr 重定向到另一个文件 (file_2.txt),并且我想将此输出附加到 file_2.txt 内容。我已经尝试过这个:

$ ./file_1.txt >>&2 file_2.txt

那没有用。我究竟做错了什么?正确的命令是什么?

答案1

如果 shell 是bashksh(版本 2020.0.0,也许在其他版本中),您需要的是:

./file_1.txt >> file_2.txt 2>&1 

这会将 stderr 重定向到附加到 file_2.txt 的 stdout。让&shell 知道您正在使用文件描述符而不是文件名。您拥有的命令不起作用,因为语法对任何内容都无效,因此 shell 无法解析重定向。

上面的命令通过重定向这两个命令来解决这个问题,file_2.txt正如我所解释的那样。

如果bash,您还可以使用 Steeldriver 提供的:

./file_1.txt &>> file_2.txt

那做同样的事情。&表示 stdout 和 stderr 并将>>它们附加到file_2.txt.我最初给出了第一个命令,因为这是我通常使用的命令,因为它是我多年前首先学到的。

tcsh经过测试,两者都不适用于6.21.00 版本。他们分别给出Invalid null command.Ambiguous output redirect

相关内容