Windows: rediriger stdout et stderror vers rien

33

J'ai une commande que j'exécute produit une tonne de sortie, je veux faire taire la sortie sans écrire dans un fichier. J'ai utilisé ce qui suit pour envoyer toutes les sorties dans un fichier, mais encore une fois, je ne veux aucune sortie de fichier:

command > out.txt 2>&1

Je l'ai déjà utilisé command > /dev/nullsur ma boîte CentOS, mais je ne trouve rien de similaire pour Windows.

Gorges d'Alec
la source
J'espère que vous l'avez utilisé command > /dev/nullsur votre CentOS.
Kurt Pfeifle
@pipitas tout ce que j'ai fait a fonctionné: D
Alec Gorge
Si vous avez effectivement utilisé command > /bin/nullsur CentOS, vous avez créé un fichier de fichier commun nommé /bin/nullsur votre système. Vous pouvez dire «ça a marché! , si tu veux. Ce fichier contient maintenant la sortie stdout et stderr de votre command. Habituellement, /bin/il n'y a que des fichiers exécutables. Et généralement, seul l' utilisateur root est autorisé à y créer des fichiers. Donc, si ce fichier est là, vous avez exécuté votre commande en tant qu'utilisateur root ... /bin/nulln'existe généralement pas - et /dev/null(ce que j'ai mentionné) est généralement utilisé comme le `` tout noir '' où la sortie indésirable devrait disparaître dans ...
Kurt Pfeifle
Bon point, je n'y avais pas pensé. Cependant, je suis presque sûr que c'est juste ma mémoire défectueuse parce que j'étais sous Windows à l'époque.
Alec Gorge

Réponses:

47

Tu veux command > nul 2>&1.

Jed Daniels
la source
Merci! ça marche. Je dois cependant attendre 12 minutes pour accepter la réponse (exigence de défaut de serveur)!
Alec Gorge
7
Cela ne redirige que stdout. Vous avez également besoin > nul 2>&1ou 2> nulpour tuer stderr.
grawity
Oui, je le sais, mais merci de l'avoir mentionné pour ceux qui visitent cette question!
Alec Gorge
juste pour ajouter, je recevais une erreur de refus d'autorisation en utilisant: sudo hostname -f 2> nul alors que la commande suivante fonctionnait bien: sudo hostname -f 2> / dev / null Pour ceux qui manquent de permission lors de l'utilisation de nul
Ranvir
1
@AminM nulest le mot-clé spécial de Windows pour une sortie nulle (c'est-à-dire rejeter la sortie). Sur les systèmes basés sur * nix (comme Ranvir fait référence), ils utilisent à la place le fichier spécial /dev/null. Le >moyen "rediriger" (et 2>signifie le tampon de redirection 2 - qui est la sortie d'erreur)
Doktor J
3

Tu veux command > null 2>&1

nulne fonctionne que dans l'invite de commande alors qu'il nullfonctionne en PowerShell

Null peut être utilisé dans et cmd.exe pour des raisons de compatibilité, mais crée un fichier appelé null.

AirCombat
la source
3
L'invite de commandes est cmd.exe. '> null' crée un fichier appelé 'null' avec tout ce que vous y dirigez à partir de cmd.exe et de PowerShell.
M. Smythe
Je n'en avais aucune idée. J'ai dûment modifié ma réponse.
AirCombat