O redirecionamento da saída do comando parece irrelevante porque a notificação é enviada pelo shell quando um trabalho é iniciado de forma assíncrona. Mais precisamente, é um recurso de shell (funcionalidade) relacionado ao controle de tarefas .
Aqui, uma citação que vem do "Bash Reference Manual", capítulo "Job Control", seção um.
O shell associa um JOB a cada pipeline. Ele mantém uma tabela de trabalhos em execução no momento, que podem ser listados com o jobs
comando Quando o Bash inicia um trabalho de forma assíncrona, ele imprime uma linha parecida com:
[1] 25647
indicando que esse trabalho é o número 1 e que o ID do último processo no pipeline associado a esse trabalho é 25647. Todos os processos em um único pipeline são membros do mesmo trabalho. O Bash usa a abstração do JOB como base para o controle do trabalho.
Observe que um script de shell não exibe esta notificação.
$ cat test
#!/bin/bash
true & echo true
$ ./test
true
Em fatos
Zsh
A documentação do Zsh fornece indicações semelhantes sobre essas notificações, consulte a man 1 zshmisc
seção "TRABALHOS". Essas notificações não são exibidas quando o controle de trabalho está desativado.
MONITOR ( -m , ksh: -m )
Permitir controle do trabalho. Definido por padrão no shell interativo.
zsh_prompt % setopt no_monitor
zsh_prompt % true & echo true
true
zsh_prompt %
zsh_prompt %
Bater
Parece que o Bash sempre exibe, por exemplo [1] 25647
. A "notificação final", por exemplo, [1]+ Done true
não é exibida quando o controle do trabalho está desativado.
bash_prompt $ true & echo true
[1] 25647
true
bash_prompt $
[1]+ Done true
Controle de trabalho desativado
bash_prompt $ set +m # disable job control
bash_prompt $ true & echo true
[1] 25685
bash_prompt $
bash_prompt $
Conclusão
Não sei se desabilitar o controle do trabalho para ocultar as notificações é uma coisa boa?
Recursos