Comment masquer la sortie écran (printf) d'une application Shell sous Linux?
Vous pouvez rediriger la sortie de n'importe quel programme pour qu'elle ne soit pas vue.
$ program > /dev/null
Cela redirigera la sortie standard - vous verrez toujours des erreurs
$ program &> /dev/null
Cela redirigera toutes les sorties, y compris les erreurs.
Trois périphériques d'E/S sont disponibles sur la ligne de commande.
standard input - 0
standard output - 1
standard error - 2
Pour rediriger la sortie standard (la sortie par défaut) vers un fichier (et écraser le fichier), utilisez
command > file.log
Pour ajouter à file.log, utilisez deux >
s
command >> file.log
Pour rediriger l'erreur standard vers le fichier.log, utilisez
command 2> file.log
Et pour ajouter
command 2>> file.log
Pour combiner les sorties en un seul flux et les envoyer toutes au même endroit
command > file.log 2>&1
Cela envoie 2 (erreur standard) en 1 (sortie standard) et envoie la sortie standard à file.log
Notez qu'il est également possible de rediriger l'entrée standard vers une commande qui attend une entrée standard
command << file.txt
Pour plus de détails, consultez le Advanced Bash Scripting Guide .
Masquer la sortie standard:
./command >/dev/null
Masquer la sortie standard et l'erreur standard:
./command >/dev/null 2>&1
Masquer la sortie standard et l'erreur standard et libérer le terminal (exécutez la commande en arrière-plan):
./command >/dev/null 2>&1 &
Si vous souhaitez simplement masquer la sortie (et non l'enregistrer dans un fichier), vous pouvez utiliser:
Édité:
$ command &>/dev/null
Pour Mac OS X v10.6 (Snow Leopard):
Si vous devez masquer la sortie sans en informer le programme en vérifiant le descripteur du fichier de sortie/erreur, vous pouvez essayer d'utiliser ce qui suit dans un shell:
stty flusho; command ;stty -flusho
ou si vous souhaitez simplement masquer les entrées du terminal:
stty -echo; command ;stty echo
Voir la page de manuel stty (1) pour plus d'informations.
Pour Linux, tout ce que je sais, c'est que buntu 10.04 (Lucid Lynx) et certains Debian/Arch Linux (commentés ci-dessous - merci, hendry) n'ont pas le paramètre flusho
(et je ne vois rien d'autre approprié dans la page de manuel). Le paramètre echo
fonctionne quand même sur Ubuntu.