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 time
en el primer comando es una palabra clave de shell. El time
del segundo comando es el ejecutable. Vea el type
resultado de time
:
$ type -a time
time is a shell keyword
time is /usr/bin/time
El comando unbuffer
necesita un programa como argumento, no una palabra clave del shell. No puede interpretar una palabra clave del shell, es una bash
palabra clave interna.
Y la diferencia en el resultado que ves es la diferencia de esas dos implementaciones del time
comando. Simplemente use la ruta absoluta en el primer comando y tendrá el mismo comportamiento que en el segundo:
/usr/bin/time find . -name unixstuff