Erros para o /dev/null?
Sabia que redirecionar os erros de execução para /dev/null nem sempre vai ser a melhor opção? Repare no tempo de execução dos exemplos a seguir:
# Teste com redirecionamento para /dev/null (1 milhão de iterações do comando 'true')
time for i in {1..1000000}; do true 2>/dev/null; done
real 0m12.066s # Tempo total
user 0m3.581s # Tempo no modo usuário (execução do comando)
sys 0m8.448s # Tempo no modo kernel (operações do sistema)
# Teste com fechamento do canal de erro (1 milhão de iterações do comando 'true')
time for i in {1..1000000}; do true 2>&-; done
real 0m2.903s # Tempo total
user 0m2.277s # Tempo no modo usuário
sys 0m0.619s # Tempo no modo kernel
A diferença é gritante, especialmente no tempo sys (tempo de kernel), não é?