¿Por qué el comando de eliminación del búfer afecta el comando de tiempo?

¿Por qué el comando de eliminación del búfer afecta el comando de tiempo?

Noté algo extraño al usar el comando de eliminación del búfer con el comando de tiempo. Aquí sólo quiero ver cuánto tiempo lleva encontrar un determinado archivo en mi sistema:

time find . -name unixstuff

la salida es:

./Documents/CProgramming/2031/unix/Awk/unixstuff
0.011u 0.173s 0:00.38 47.3%     0+0k 0+0io 0pf+0w

pero cuando escribo unbuffer antes de este comando, la salida es:

./Documents/CProgramming/2031/unix/Awk/unixstuff
0.01user 0.17system 0:00.38elapsed 47%CPU (0avgtext+0avgdata 4656maxresident)k
0inputs+0outputs (0major+338minor)pagefaults 0swaps

Tenga en cuenta que 0,17 s se expandió al sistema 0,17 y se produjeron otras expansiones de taquigrafía. Me gustaría saber por qué ocurre este cambio de comportamiento. No quiero una salida impredecible en mis tuberías.

Respuesta1

Es porque timeen el primer comando es una palabra clave de shell. El timedel segundo comando es el ejecutable. Vea el typeresultado de time:

$ type -a time
time is a shell keyword
time is /usr/bin/time

El comando unbuffernecesita un programa como argumento, no una palabra clave del shell. No puede interpretar una palabra clave del shell, es una bashpalabra clave interna.

Y la diferencia en el resultado que ves es la diferencia de esas dos implementaciones del timecomando. Simplemente use la ruta absoluta en el primer comando y tendrá el mismo comportamiento que en el segundo:

/usr/bin/time find . -name unixstuff

información relacionada