Quando o seu processo ( find
) precisa realmente escrever a saída, isso obviamente demora muito mais do que quando você diz para descartar a saída.
-
Quando você usa
find /
, tanto o stdout quanto o stderr são enviados para o seu terminal, e ele tem que escrever ambos (ou seja, os resultados reais e todos os erros de permissão e outros) -
Quando você usa
time find / >/dev/null
, está descartando a saída padrão do comando, mas ainda imprime todos os erros (se tiver algum). A julgar pelos seus resultados, você tem muitos resultados legítimos e muito poucos erros. -
Quando você usa
time find / 2> /dev/null
, a saída padrão do comando ainda está sendo enviada para o seu terminal, mas agora você está simplesmente removendo o stderr. Se você estivesse encontrando através de um sistema de arquivos que você não tinha permissão para ler, isso seria realmente muito rápido. -
Quando você usa
time find / > /dev/null 2>&1
, está descartando a saída padrão e, em seguida, envia um erro padrão para onde a saída padrão está sendo enviada, ou seja, você está descartando os dois. Isso não produzirá nada e, portanto, será o mais rápido de todos os comandos.