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 ls
comando, 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?&>file
es 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/time
en su lugar, que definitivamente acepta cualquier redirección de salida.fuente
bash time mycmd 2>file
. O simplemente llame/usr/bin/time
como se mencionó.Si no desea mezclar la salida de
time
y el comando. Con el tiempo de GNU, puede usar-o file
como:while
tim
es una salida de tiempoout
yerr
son stdout y stderr degrep
.fuente
La razón por la que la redirección no parece funcionar
time
es 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
&>>rpt
representa esto>>rpt 2>&1
pero más corto.Las llaves ejecutarán un comando (s) en el shell actual. Ver: man bash
fuente