Em circunstâncias normais, stdin
, stdout
e stderr
sempre existem:
ls -l /proc/self/fd
Mas nem todos eles são usados por todos os comandos. Você pode verificar onde um comando grava em:
> strace -e trace=write cat nonexistfile
write(2, "cat: ", 5cat: ) = 5
write(2, "nonexistfile", 12nonexistfile) = 12
write(2, ": No such file or directory", 27: No such file or directory) = 27
write(2, "\n", 1
) = 1
Ou mais simples: compare
command >/dev/null
com
command 2>/dev/null