62 votes

Comment puis-je cacher la sortie d'une application Shell sous Linux ?

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

88voto

theotherreceive Points 8185

Vous pouvez rediriger la sortie de n'importe quel programme afin qu'elle ne soit pas visible.

$ program > /dev/null

Ceci redirigera la sortie standard - vous verrez toujours les erreurs.

$ program &> /dev/null

Ceci redirigera toutes les sorties, y compris les erreurs.

36voto

Matt Simmons Points 20098

Il y a trois dispositifs d'E/S 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 au fichier .log, utilisez deux > s

 command >> file.log

Pour rediriger l'erreur standard vers le fichier .log, utilisez

 command 2> file.log

Et d'ajouter

 command 2>> file.log

Pour combiner les sorties en un seul flux et les envoyer à un seul endroit.

 command > file.log 2>&1

Ceci envoie 2 (erreur standard) dans 1 (sortie standard), et envoie la sortie standard dans file.log.

Notez qu'il est également possible de rediriger l'entrée standard vers une commande qui attend l'entrée standard

 command << file.txt

Pour plus de détails, consultez le Guide avancé du script Bash .

16voto

Leland Wallace Points 685

Cacher la sortie standard :

./command >/dev/null

Cacher la sortie standard et l'erreur standard :

./command >/dev/null 2>&1

Cacher la sortie standard et l'erreur standard et libérer le terminal (exécuter la commande en arrière-plan) :

./command >/dev/null 2>&1 &

3voto

Lucho Points 39

Si vous voulez juste cacher la sortie (et ne pas l'enregistrer dans un fichier), vous pouvez utiliser :

Édité :

$ command &> /dev/null

3voto

vike Points 63

Pour Mac OS X v10.6 (Snow Leopard) :

Si vous devez masquer la sortie sans que le programme le sache en vérifiant le descripteur de fichier de sortie/d'erreur, vous pouvez essayer d'utiliser ce qui suit dans un Shell :

stty flusho; command ;stty -flusho

ou si vous voulez simplement cacher l'entrée du terminal en passant :

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 Ubuntu 10.04 (Lucid Lynx) et certaines versions de Debian/Arch Linux (commentées ci-dessous - merci, hendry) n'ont pas l'extension flusho (et je ne vois rien d'autre d'approprié dans la page de manuel). Le site echo La configuration fonctionne sur Ubuntu de toute façon.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X