117 votes

Comment rediriger la sortie de la commande "time" ?

J'ai essayé de rediriger la sortie de la commande time, mais je n'ai pas pu :

$time ls > filename
real    0m0.000s
user    0m0.000s
sys     0m0.000s

Dans le fichier, je peux voir la sortie de la commande ls, pas celle de time. Veuillez expliquer pourquoi je n'ai pas pu et comment faire cela.

150voto

ghostdog74 Points 86060

pas besoin de lancer la sous-coque. Utiliser un bloc de code fera aussi l'affaire.

{ time ls; } 2> out.txt

ou

{ time ls > /dev/null 2>&1 ; } 2> out.txt

115voto

sganesh Points 576

vous pouvez rediriger la sortie temporelle en utilisant,

(time ls) &> file

Parce que vous devez prendre (temps ls) comme une seule commande afin que vous puissiez utiliser des accolades.

33voto

Mnementh Points 19831

Le temps de commande envoie sa sortie à STDERR (au lieu de STDOUT). C'est parce que la commande exécutée avec le temps normalement (dans ce cas ls) sort vers STDOUT.

Si vous souhaitez capturer la sortie du temps, tapez :

(time ls) 2> filename

Cela ne capture que la sortie du temps, mais la sortie de ls devient normale à la console. Si vous voulez capturer les deux dans un seul fichier, tapez :

(time ls) &> filename

2> redirige STDERR, &> redirige les deux.

11voto

Michal Čihař Points 3981

time is shell builtin et je ne sais pas s'il y a moyen de le rediriger. Cependant, vous pouvez utiliser /usr/bin/time la place, qui acceptent définitivement toutes les redirections de sortie.

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