Answers:
它们都连接到I / O重定向,如此处所述。
在这种情况下&>
,将标准输出(stdout)和标准错误输出(stderr)重定向到文件。例如,让我们将date的输出重定向到这样的文件:
date &> foo.txt
这将创建 - 或覆盖 - 以foo.txt
输出命名的文件date
。该文件的内容将是这样的:
Sun Oct 4 22:37:58 EDT 2015
但在这种情况下&>>
,将标准输出(stdout)和标准错误输出(stderr)重定向到文件。但是>>
指示指定的文件应该附加到,如果已经存在则不会被覆盖。
所以如果我连续几次运行这个命令:
date &> foo.txt
所有foo.txt
这些都是上次运行该命令的输出,因为单个>
指示每次运行命令都会覆盖文件内容。
但是,如果我>>
连续几次运行此命令:
date &>> foo.txt
该foo.txt
文件将date
附加到它的输出如下:
Sun Oct 4 22:37:58 EDT 2015
Sun Oct 4 22:38:06 EDT 2015
Sun Oct 4 22:38:13 EDT 2015
Sun Oct 4 22:38:15 EDT 2015
Sun Oct 4 22:38:16 EDT 2015
请注意,&>>
它似乎不适用于Bash 3.x,但在Bash 4.x中按预期工作。