cat is misunderstood a lot. The purpose of cat is to combine multiple files together (it's literally short for "concatenate"), like cat *.log to combine all log files together.
If you're just using it for a single file, then you should just redirect the file to stdin. These two command lines behave similarly:
cat foo.txt | some-command
some-command < foo.txt
For head, tail, grep and some other commands, you can just pass in the file name directly as an argument (e.g. grep whatever foo.txt).


