Ambos estão conectados ao redirecionamento de E / S conforme explicado aqui .
No caso de &> , isso redireciona a saída padrão (stdout) e a saída de erro padrão (stderr) para um arquivo. Por exemplo, vamos redirecionar a saída de data para um arquivo como este:
date &> foo.txt
Isso criaria - ou substituiria - um arquivo chamado foo.txt com a saída de date . E o conteúdo desse arquivo seria algo assim:
Sun Oct 4 22:37:58 EDT 2015
Mas, no caso de &>> , que redireciona a saída padrão (stdout) e a saída de erro padrão (stderr) para um arquivo. Mas o >> indica que o arquivo designado deve ser anexado e não sobrescrito se já existir.
Então, se eu executar este comando algumas vezes seguidas:
date &> foo.txt
Tudo que o foo.txt jamais teria é a saída da última vez que o comando foi executado, já que o único > indica que o conteúdo do arquivo seria sobrescrito a cada execução do comando.
Mas se eu executar este comando com o >> algumas vezes seguidas:
date &>> foo.txt
O arquivo foo.txt teria a saída de date anexada a ele assim:
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
Apenas observe que &>> parece não funcionar no Bash 3.x, mas funciona como esperado no Bash 4.x.