Onde o 'time' produz seu resultado?

2

Estou no Ubuntu.

A execução de time parece produzir seu resultado para algo diferente de STDOUT ou STDERR . Aqui está porque eu penso assim:

[siminm@amide ~]$ time echo hi
hi

real    0m0.000s
user    0m0.000s
sys 0m0.000s
[siminm@amide ~]$ time echo hi >/dev/null 

real    0m0.000s
user    0m0.000s
sys 0m0.000s
[siminm@amide ~]$ time echo hi 2>/dev/null 
hi

real    0m0.000s
user    0m0.000s
sys 0m0.000s
[siminm@amide ~]$ time echo hi 2>&1 >/dev/null 

real    0m0.000s
user    0m0.000s
sys 0m0.000s
[siminm@amide ~]$ time echo hi &>/dev/null 

real    0m0.000s
user    0m0.000s
sys 0m0.000s

NO ENTANTO

[siminm@amide ~]$ /usr/bin/time echo hi 2>/dev/null 
hi
    
por Mikhail 29.04.2011 / 21:41

3 respostas

2

Seu shell, que provavelmente é bash, fornece um comando interno time . Há também um programa separado chamado time in /usr/bin/ , que está no seu $PATH . O comportamento dos dois é diferente. Se você quiser consistência em todas as configurações, você deve usar o programa /usr/bin/time em vez do bash embutido time .

    
por 29.04.2011 / 22:06
1

Você está sempre redirecionando apenas a saída do seu comando. Como o tempo grava no stderr, tente o seguinte:

(time ls >> /stdout/output/of/ls 2>> /stderr/output/of/ls) 2>> /output/of/time
    
por 29.04.2011 / 21:54
1

A saída interna de "tempo" vai para o que stderr aponta para antes que redirecionamentos ocorram.

Qualquer comando não embutido como / usr / bin / time não pode substituir o redirecionamento como eles acontecem antes de ser lançado, então sua saída vai para stderr.

    
por 29.04.2011 / 21:53