J'ai écrit deux scripts shell a.sh
et b.sh
. Dans a.sh
et b.sh
j'ai une boucle for infinie et ils impriment une sortie sur le terminal. Je veux écrire un autre script qui appelle à la fois a.sh
et b.sh
mais je veux que l'utilisateur reprenne immédiatement le contrôle du terminal, au lieu de laisser le script s'exécuter à l'infini et je veux cacher le sortie dans le terminal.
Réponses
Trop de publicités?Redirigez la sortie vers un fichier comme celui-ci :
./a.sh > somefile 2>&1 &
Cela redirigera à la fois stdout et stderr vers le même fichier. Si vous souhaitez rediriger stdout et stderr vers deux fichiers différents, utilisez ceci :
./a.sh > stdoutfile 2> stderrfile &
Vous pouvez utiliser /dev/null
comme un ou les deux fichiers si vous ne vous souciez pas du stdout et/ou du stderr.
Voir la page de manuel bash pour plus de détails sur les redirections.
Désolé, c'est un peu tard, mais j'ai trouvé la solution idéale pour les commandes simples où vous ne voulez pas de sortie standard ou d'erreur (crédit là où c'est dû :http://felixmilea.com/2014/12/running-bash-commands-background -correctement/ )
Cela redirige la sortie vers null et garde l'écran clair :
command &>/dev/null &
S'ils sont dans le même répertoire que votre script qui contient :
./a.sh > /dev/null 2>&1 &
./b.sh > /dev/null 2>&1 &
Le &
à la fin est ce qui fait que votre script s'exécute en arrière-plan.
La partie > /dev/null 2>&1
n'est pas nécessaire - elle redirige les flux stdout et stderr afin que vous n'ayez pas à les voir sur le terminal, ce que vous voudrez peut-être faire pour les scripts bruyants avec beaucoup de sortie.