Esta questão é abordada em BashFAQ / 032 . No seu exemplo, você faria:
{ time sleep 1; } 2> /dev/null
A razão pela qual
time sleep 1 2>/dev/null
não se comporta como você está esperando é porque com essa sintaxe, você vai querer time
o comando sleep 1 2>/dev/null
(sim, o comando sleep 1
com stderr redirecionado para %código%). O /dev/null
embutido funciona dessa maneira para tornar isso realmente possível.
O time
builtin pode realmente fazer isso porque ... bem, é um embutido. Tal comportamento seria impossível com o comando externo bash
geralmente localizado em time
. De fato:
$ /usr/bin/time sleep 1 2>/dev/null
$
Agora, a resposta para sua pergunta
Why does the output of some linux programs go to neither STDOUT nor STDERR?
é: o resultado é stdout ou stderr .
Espero que isso ajude!