web-dev-qa-db-fra.com

Comment masquer la sortie d'une application Shell sous Linux?

Comment masquer la sortie écran (printf) d'une application Shell sous Linux?

47
Jader Dias

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.

72
theotherreceive

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 .

30
Matt Simmons

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 &
12
gummy

Si vous souhaitez simplement masquer la sortie (et non l'enregistrer dans un fichier), vous pouvez utiliser:

Édité:

$ command &>/dev/null

3
Lucho

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.

2
vike