I'm new to linux about ten days, and my English is not good. I'm learning the I/O redirection part.

I know when a command is successful, the screen do not display error message, and the command failed have one.

For example when I input cat file1. Before the command issued. What is the state of stdin, stdout and stderr? After I issued the command. What is the state of the standard stream?

When the file1 exist. In my opinion the final input is file1 and final output is the terminal.(not sure;-0-) And I don't have a error message. So does it mean that I don't have stderr here? Or where is it?

When there is no file exist. I have just a error message. So does it mean that I don't have stdin and redirect the stderr to stdout?

Thank you who can explain this to me or give me some clue like using man-page or anything else.

1 Answer 1


Under normal circumstances stdin, stdout, and stderr always exist:

ls -l /proc/self/fd

But not all of them are used by every command. You can check where a command writes to:

> 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

Or simpler: compare

command >/dev/null


command 2>/dev/null

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.