Em ksh, bash e zsh, time é uma palavra-chave, não uma incorporada. Redirecionamentos na mesma linha aplicam-se apenas ao comando que está sendo cronometrado, e não à saída de time em si.
$ time ls -d / /nofile >/dev/null 2>/dev/null
real 0m0.003s
user 0m0.000s
sys 0m0.000s
Para redirecionar a saída do time nesses shells, você precisa usar um nível adicional de agrupamento.
{ time mycommand 2>&3; } 3>&2 2>mycommand.time
Se você usar a versão GNU do utilitário time autônomo, ele terá uma opção -o para gravar a saída de time em outro lugar que stderr. Você pode fazer time escrever no terminal:
/usr/bin/time -o /dev/tty mycommand >/dev/null 2>/dev/null
Se você quiser manter a saída de time em seu erro padrão, você precisa de um nível extra de embaralhamento do descritor de arquivo.
/usr/bin/time -o /dev/fd/3 mycommand 3>&2 >/dev/null 2>/dev/null
Com qualquer utilitário time , você pode invocar um shell intermediário para executar os redirecionamentos desejados. Invocar um shell intermediário para executar ações extras, como cd , redirecionamentos, etc., é bastante comum - é o tipo de pequenas coisas que os shells são projetados para fazer.
/usr/bin/time sh -c 'exec mycommand >/dev/null 2>/dev/null'