我正在尝试将命令的输出(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