Sua confusão pode ser porque >&
é totalmente diferente de &
.
>&
ou <&
são usados no redirecionamento para apontar para um descritor de arquivo (fd). Os casos acima redirecionam para 1 e 2, que são stdout e stderr, respectivamente.
>
significa "stdout de redirecionamento"
2>
significa "redirecionamento fd 2 (stderr)"
>&2
significa "redirecionar stdout para fd 2 (stderr)". Observe como isso difere de >2
, o que significaria "redirecionar stdout para um arquivo chamado 2
" - é por isso que o &
é importante. Isso indica que a próxima coisa será um fd, não um nome de arquivo.
Agora, claro, como você observou, se um &
estiver sozinho sem um símbolo de redirecionamento, significa algo completamente diferente - "retorne imediatamente, execute o comando anterior em segundo plano".