Intenté redirigir la salida del comando de tiempo, pero no pude:
$time ls > filename
real 0m0.000s
user 0m0.000s
sys 0m0.000s
En el archivo puedo ver la salida del lscomando, no la de time. Por favor, explique por qué no pude y cómo hacer esto.
shell
unix
time
io-redirection
abubacker
fuente
fuente

Respuestas:
puede redirigir la salida de tiempo usando,
Porque necesita tomar (time ls) como un solo comando para poder usar llaves.
fuente
&>favor, ¿dónde puedo obtener información sobre estos?&>filees análogo a>file 2>&1. Dirige stdout y stderr.no es necesario iniciar sub shell. Usar un bloque de código también servirá.
o
fuente
2>favor. ¿Dónde puedo aprender sobre estos?El tiempo de comando envía su salida a STDERR (en lugar de STDOUT). Eso es porque el comando ejecutado con el tiempo normalmente (en este caso ls) se envía a STDOUT.
Si desea capturar la salida del tiempo, escriba:
Eso captura solo la salida de tiempo, pero la salida de ls es normal en la consola. Si desea capturar ambos en un archivo, escriba:
2> redirecciona STDERR, &> redirecciona ambos.
fuente
el tiempo está integrado en el shell y no estoy seguro de si hay forma de redirigirlo. Sin embargo, puede usar
/usr/bin/timeen su lugar, que definitivamente acepta cualquier redirección de salida.fuente
bash time mycmd 2>file. O simplemente llame/usr/bin/timecomo se mencionó.Si no desea mezclar la salida de
timey el comando. Con el tiempo de GNU, puede usar-o filecomo:while
times una salida de tiempooutyerrson stdout y stderr degrep.fuente
La razón por la que la redirección no parece funcionar
timees que es una palabra reservada de bash (¡no incorporada!) Cuando se usa frente a una canalización. bash (1):Entonces, para redirigir la salida de
time, use llaves:O llame al
/usr/bin/time:fuente
Utilizo la redirección del método stdout y stderr con llaves para las pruebas.
El
&>>rptrepresenta esto>>rpt 2>&1pero más corto.Las llaves ejecutarán un comando (s) en el shell actual. Ver: man bash
fuente