Bash 重定向:附加到文件描述符 (2>>&1)

Bash 重定向:附加到文件描述符 (2>>&1)

我正在尝试将命令的输出(stdout 和 stderr)附加到现有文件。

我想做的是这样的:

command >>file 2>>&1

问题是会2>>&1抛出错误,但>>file 2>>file不会。

所以,我认为我误解了重定向的工作原理,或者什么是文件描述符以及其中保存的信息。

总结一下,以下两个命令有什么区别,为什么第一个命令不起作用,但第二个命令起作用?

command >>file 2>>&1      #not working
command >>file 2>>file    #working

谢谢

答案1

您想要做的是将文件描述符 1 (stdout) 设置为附加到文件,然后重定向 fd 2 (stderr) 以简单地执行 fd 1 正在执行的操作。

command >>file 2>&1

您会收到错误,2>>&1因为>>&它不是重定向运算符。

重定向在 bash 手册中,特别是第 3.6.5 和 3.6.8 节

答案2

由于它被标记为bash,因此您可以使用&>>它来重定向(附加)stdout 和 stderr。

command &>>file

相关内容