time
escreve para stderr.
O motivo pelo qual parece não é que você está escrevendo o stderr do comando atual para /dev/null
, não a saída de tempo. Isso ocorre porque time
é uma palavra-chave que é analisada de maneira diferente dos utilitários regulares: o redirecionamento é parte do comando cronometrado.
O uso de um bloco de código redireciona toda a saída.
{ time ls; } 2> /dev/null
Note que você ainda pode redirecionar a saída de ls para outro lugar dentro do bloco, se quiser, e isso será cronometrado.
Para redirecionar tudo o que você pode fazer
{ time ls 1>&2; } 2> /dev/null