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.