I noticed this problem when I became confused with pipe, one command send its executing output to the STDOUT, which is the STDIN for the other command, which can read from STDIN.
How do I know if a Linux command can read from STDIN?
Is there a feature to distinguish commands that can read from STDIN from those cannot?