87 votes

Redirection de la sortie de la commande vers le fichier et le terminal

J'essaie d'envoyer la sortie de la commande dans un fichier et dans la console. C'est parce que je veux garder un enregistrement de la sortie dans le fichier. Je fais ce qui suit et il joint au fichier mais n'imprime pas. ls sortie sur le terminal.

$ls 2>&1 > /tmp/ls.txt

131voto

Karoly Horvath Points 45145

Oui, si vous redirigez la sortie, elle n'apparaîtra pas sur la console. Utilisez tee .

ls 2>&1 | tee /tmp/ls.txt

46voto

Serge Rogatch Points 18

Il est utile de mentionner que 2>&1 signifie que l'erreur standard sera également redirigée, en même temps que la sortie standard. Donc

someCommand | tee someFile

vous donne seulement la sortie standard dans le fichier, mais pas l'erreur standard : l'erreur standard apparaîtra dans la console seulement. Pour obtenir l'erreur standard dans le fichier aussi, vous pouvez utiliser

someCommand 2>&1 | tee someFile

(source : Dans le shell, que signifie " 2>&1 " ? ). Enfin, les deux commandes ci-dessus vont tronquer le fichier et recommencer à zéro. Si vous utilisez une séquence de commandes, vous pouvez vouloir obtenir la sortie&erreur de chacune d'entre elles, l'une après l'autre. Dans ce cas, vous pouvez utiliser l'option -a à la commande "tee" :

someCommand 2>&1 | tee -a someFile

19voto

Jessica Points 446

Si quelqu'un a besoin d'ajouter la sortie et non de la remplacer, il est possible d'utiliser l'option "-a" ou "--append" de la commande "tee" :

ls 2>&1 | tee -a /tmp/ls.txt
ls 2>&1 | tee --append /tmp/ls.txt

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