889 votes

Rediriger toute la sortie au fichier

Je sais que sous Linux, pour rediriger la sortie de l'écran vers un fichier, je peux soit utiliser la > ou té. Cependant, je ne suis pas sûr pourquoi une partie de la production est toujours le résultat à l'écran et ne sont pas écrites dans le fichier. Est-il un moyen de rediriger toutes les sortie vers un fichier?

Je vous remercie.

1404voto

Op De Cirkel Points 8632

Cette partie est écrite sur la sortie stderr, utilisez 2> de la rediriger. Par exemple:

foo > stdout.txt 2> stderr.txt

ou si vous le souhaitez dans un même fichier:

foo > allout.txt 2>&1

Remarque: cela fonctionne dans la (ba)sh, vérifiez votre shell pour la syntaxe correcte

183voto

Bryan Agee Points 1941

Tous POSIX systèmes d'exploitation ont 3 flux: stdin, stdout, et stderr. stdin est l'entrée, qui peut accepter le stdout ou stderr. la sortie standard est la sortie principale, qui est réorientée en >, >>ou |. stderr est la sortie d'erreur, qui est géré séparément, de sorte que les exceptions ne pas obtenir passé à une commande ou à l'écrit dans un fichier qu'il pourrait break; normalement, il est envoyé à un journal ou sous-évaluées directement, même si la sortie standard est redirigée. Pour rediriger les deux à la même place, utilisez:

command

EDIT: merci Zack pour préciser que la solution ci-dessus n'est pas portable--utiliser à la place:

 &> /some/file

Si vous voulez le silence de l'erreur, n':

*command* > file 2>&1 

123voto

mps Points 528

Pour obtenir la sortie de la console, ainsi que dans un file.txt

make 2>&1 | tee file.txt

18voto

Petar Ivanov Points 29530

Il pourrait être la norme de l'erreur. Vous pouvez rediriger:

... > out.txt 2>&1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X