shell unix time io-redirection

shell - ¿Cómo puedo redirigir el resultado del comando "tiempo"?



unix time (6)

La hora de comando envía su salida a STDERR (en lugar de STDOUT). Esto se debe a que el comando ejecutado con tiempo normalmente (en este caso ls) da salida a STDOUT.

Si desea capturar la salida del tiempo, escriba:

(time ls) 2> filename

Eso captura solo el tiempo de salida, pero la salida de l es normal para la consola. Si desea capturar ambos en un archivo, escriba:

(time ls) &> filename

2> redirige STDERR, y> redirige ambos.

Traté de redirigir el resultado del comando de tiempo, pero no pude:

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

En el archivo, puedo ver el resultado del comando ls , no el del time . Por favor explique, por qué no pude y cómo hacer esto.


La razón por la cual la redirección no parece funcionar con el time es que es una palabra reservada bash (¡no es un built-in!) Cuando se usa frente a una tubería. bash (1):

Si la palabra reservada de tiempo precede a una interconexión, el tiempo transcurrido así como el tiempo del usuario y del sistema consumido por su ejecución se informan cuando finaliza la interconexión.

Entonces, para redirigir la salida del time , use llaves:

{ time ls; } 2> filename

O llama /usr/bin/time :

/usr/bin/time ls 2> filename


Si no desea mezclar la salida del time y el comando. Con el tiempo de GNU, puede usar -o file como:

/usr/bin/time -o tim grep -e k /tmp 1>out 2>err

mientras que tim es salida de tiempo, out y err son stdout y stderr de grep .


el tiempo es shell incorporado y no estoy seguro de si hay alguna forma de redirigirlo. Sin embargo, puede usar /usr/bin/time lugar, lo que definitivamente acepta cualquier redirección de salida.


no es necesario lanzar sub shell. Usar un bloque de código también lo hará.

{ time ls; } 2> out.txt

o

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


puede redirigir la salida de tiempo usando,

(time ls) &> file

Porque necesita tomar (tiempo ls) como un solo comando para que pueda usar llaves.