La redirection de la sortie de la commande semble être hors de propos car la notification est envoyée par le shell lorsqu'un travail est démarré de manière asynchrone. Plus précisément, il s'agit d'une fonction shell (fonctionnalité) liée au contrôle des tâches .
Ici, une citation qui vient du "Bash Reference Manual", chapitre "Job Control", section un.
Le shell associe un JOB à chaque pipeline. Il conserve une table des travaux en cours d'exécution, qui peuvent être répertoriés avec la jobs
commande. Lorsque Bash démarre un travail de manière asynchrone, il imprime une ligne qui ressemble à:
[1] 25647
indiquant que ce travail est le travail numéro 1 et que l'ID de processus du dernier processus du pipeline associé à ce travail est 25647. Tous les processus d'un même pipeline sont membres du même travail. Bash utilise l'abstraction JOB comme base pour le contrôle des travaux.
Notez qu'un script shell n'affiche pas cette notification.
$ cat test
#!/bin/bash
true & echo true
$ ./test
true
Dans les faits
Zsh
La documentation Zsh fournit des indications similaires sur ces notifications, voir la man 1 zshmisc
section "EMPLOIS". Ces notifications ne s'affichent pas lorsque le contrôle des travaux est désactivé.
MONITEUR ( -m , ksh: -m )
Autorisez le contrôle des travaux. Défini par défaut dans le shell interactif.
zsh_prompt % setopt no_monitor
zsh_prompt % true & echo true
true
zsh_prompt %
zsh_prompt %
Frapper
Il semble que Bash affiche toujours par exemple [1] 25647
. La "notification finale", par exemple, [1]+ Done true
ne s'affiche pas lorsque le contrôle des travaux est désactivé.
bash_prompt $ true & echo true
[1] 25647
true
bash_prompt $
[1]+ Done true
Contrôle des travaux désactivé
bash_prompt $ set +m # disable job control
bash_prompt $ true & echo true
[1] 25685
bash_prompt $
bash_prompt $
Conclusion
Je ne sais pas si désactiver le contrôle des travaux pour masquer les notifications est une bonne chose?
Ressources