J'ai un programme qui génère des sorties vers stdout et je voudrais faire taire cette sortie dans un script Bash lors de la création d'un fichier.
Par exemple, l'exécution du programme générera:
% myprogram
% WELCOME TO MY PROGRAM
% Done.
Je veux que le script suivant ne génère rien sur le terminal:
#!/bin/bash
myprogram > sample.s
Si cela sort aussi, vous voudrez le faire taire. Vous pouvez le faire en redirigeant le descripteur de fichier 2:
# Send stdout to out.log, stderr to err.log
myprogram > out.log 2> err.log
# Send both stdout and stderr to out.log
myprogram &> out.log # New bash syntax
myprogram > out.log 2>&1 # Older sh syntax
# Log output, hide errors.
myprogram > out.log 2> /dev/null
2>&1
avec cela vous allez rediriger le stderr (qui est le descripteur 2) vers le descripteur de fichier 1 qui est le stdout
myprogram > sample.s
Maintenant, lorsque vous effectuez cette opération, vous redirigez le stdout vers le fichier sample.s
myprogram > sample.s 2>&1
La combinaison des deux commandes aboutira à la redirection de stderr et stdout vers sample.s
myprogram 2>&1 >/dev/null
Si vous voulez que votre application soit complètement silencieuse
Toutes les sorties:
scriptname &>/dev/null
Portable:
scriptname >/dev/null 2>&1
Portable:
scriptname >/dev/null 2>/dev/null
Pour les bash les plus récents (pas de portable):
scriptname &>-
Si vous voulez STDOUT et STDERR à la fois [tout], le moyen le plus simple est:
#!/bin/bash
myprogram >& sample.s
puis exécutez-le comme ./script
et vous n'obtiendrez aucune sortie sur votre terminal. :)
le "> &" signifie STDERR et STDOUT. le &
fonctionne également de la même manière avec un tube: ./script |& sed
qui enverra tout à sed
Si vous avez encore du mal à trouver une réponse, en particulier si vous avez généré un fichier pour la sortie, et que vous préférez une alternative claire:
echo "hi" | grep "use this hack to hide the oputut :) "
Essayez avec:
myprogram &>/dev/null
obtenir aucune sortie
Remarque: cette réponse est liée à la question "Comment désactiver l'écho lors de l'exécution d'un script shell Linux" qui a été marquée comme dupliquée par celle-ci.
Pour désactiver l’écho, la commande est la suivante:
stty -echo
(Ceci est, par exemple, lorsque vous voulez entrer un mot de passe et que vous ne voulez pas qu'il soit lisible. N'oubliez pas d'activer l'écho à la fin de votre script, sinon la personne qui exécute votre script ne verra/elle entre à partir de ce moment-là.
écho stty