La redirección de la salida del comando parece ser irrelevante porque el shell envía la notificación cuando se inicia un trabajo de forma asincrónica. Más precisamente, es una función de shell (funcionalidad) relacionada con el control del trabajo .
Aquí, una cita que proviene del "Manual de referencia de Bash", capítulo "Control de trabajos", sección uno.
El shell asocia un TRABAJO con cada tubería. Mantiene una tabla de trabajos actualmente en ejecución, que se pueden enumerar con el jobs
comando. Cuando Bash inicia un trabajo de forma asincrónica, imprime una línea que se ve así:
[1] 25647
indicando que este trabajo es el trabajo número 1 y que el ID de proceso del último proceso en la tubería asociado con este trabajo es 25647. Todos los procesos en una sola tubería son miembros del mismo trabajo. Bash utiliza la abstracción JOB como base para el control del trabajo.
Tenga en cuenta que un script de shell no muestra esta notificación.
$ cat test
#!/bin/bash
true & echo true
$ ./test
true
En hechos
Zsh
La documentación de Zsh proporciona indicaciones similares sobre estas notificaciones, consulte la man 1 zshmisc
sección "TRABAJOS". Estas notificaciones no se muestran cuando el control de trabajo está desactivado.
MONITOREAR ( -m , ksh: -m )
Permitir el control del trabajo. Establecido por defecto en shell interactivo.
zsh_prompt % setopt no_monitor
zsh_prompt % true & echo true
true
zsh_prompt %
zsh_prompt %
Golpetazo
Parece que Bash siempre muestra, por ejemplo [1] 25647
. La "notificación final", por ejemplo, [1]+ Done true
no se muestra cuando el control de trabajo está desactivado.
bash_prompt $ true & echo true
[1] 25647
true
bash_prompt $
[1]+ Done true
Control de trabajo deshabilitado
bash_prompt $ set +m # disable job control
bash_prompt $ true & echo true
[1] 25685
bash_prompt $
bash_prompt $
Conclusión
No sé si deshabilitar el control del trabajo para ocultar las notificaciones es algo bueno.
Recursos