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).
catis misunderstood a lot. The purpose of cat is to combine multiple files together (it’s literally short for “concatenate”), likecat *.logto 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-commandsome-command < foo.txtFor
head,tail,grepand some other commands, you can just pass in the file name directly as an argument (e.g.grep whatever foo.txt).Also known as cat abuse.
If I just want to look at the file, is there a better way than
cat foo.txt? I guess I can’t just do< foo.txtAdmittedly I still use
catfor this.This also works too, but it’s more verbose:
echo "$(<foo.txt)"It’s mentioned in the Bash man pages:
EDIT: I was just informed that simply
<foo.txtworks too.how in the world is this not a useless use of echo and equivalent to
<foo.txtOK, TIL you can just do
<foo.txt. I didn’t think that worked. Thanks!i don’t think you can but idk why that’s by I’m asking