Por que o comando unbuffer command affect time?

3

Eu notei algo estranho ao usar o comando unbuffer com comando de tempo. Aqui eu só quero ver quanto tempo leva para encontrar um determinado arquivo no meu sistema:

time find . -name unixstuff

saída é:

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

mas quando eu escrevo unbuffer antes desta saída do comando é:

./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

Note que 0.17s é expandido para 0.17system e outras expansões de taquigrafia aconteceram. Eu gostaria de saber porque esta mudança de o comportamento acontece. Eu não quero uma saída imprevisível nos meus cachimbos.

    
por Jecht Tyre 15.10.2014 / 18:45

1 resposta

3

É porque o time no primeiro comando é uma palavra-chave do shell. O time no segundo comando é o executável. Veja a saída type de time :

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

O comando unbuffer precisa de um programa como argumento, não uma palavra-chave do shell. Não é possível interpretar uma palavra-chave do shell, esta é uma palavra-chave interna bash .

E a diferença na saída que você vê é a diferença dessas duas implementações do comando time . Basta usar o caminho abolute no primeiro comando que você tem o mesmo comportamento que no segundo:

/usr/bin/time find . -name unixstuff
    
por 15.10.2014 / 19:17

Tags