this post was submitted on 03 Aug 2026
430 points (98.0% liked)

Programmer Humor

32725 readers
1085 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 3 years ago
MODERATORS
 

ahh

~$ which cat
you are viewing a single comment's thread
view the rest of the comments
[–] dan@upvote.au 86 points 1 week ago* (last edited 1 week ago) (31 children)

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).

[–] lokalhorst@feddit.org 18 points 1 week ago* (last edited 1 week ago) (7 children)

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.txt

[–] dan@upvote.au 13 points 1 week ago* (last edited 1 week ago) (1 children)

Admittedly I still use cat for this.

This also works too, but it's more verbose:

echo "$(<foo.txt)"

It's mentioned in the Bash man pages:

The command substitution $(cat file) can be replaced by the equivalent but faster $(< file).

EDIT: I was just informed that simply <foo.txt works too.

[–] not_IO@lemmy.blahaj.zone 6 points 1 week ago (1 children)

how in the world is this not a useless use of echo and equivalent to <foo.txt

[–] dan@upvote.au 6 points 1 week ago (1 children)

OK, TIL you can just do <foo.txt. I didn't think that worked. Thanks!

[–] not_IO@lemmy.blahaj.zone 2 points 4 days ago

i don't think you can but idk why that's by I'm asking

load more comments (5 replies)
load more comments (28 replies)