我想将已执行文件 (file_1.txt) 的 stdout 和 stderr 重定向到另一个文件 (file_2.txt),并且我想将此输出附加到 file_2.txt 内容。我已经尝试过这个:
$ ./file_1.txt >>&2 file_2.txt
那没有用。我究竟做错了什么?正确的命令是什么?
答案1
如果 shell 是bash
或ksh
(版本 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
。