For the past 30 years or so, my brain always tells me to type "last" instead of "tail". This usually results in some kind of "Permission denied" message that confuses me for a few seconds.
there's a last command? just knowing that.
I was today's years old to finally notice the cat-head-tail thing...
But it also just recently dawned upon me why pacman has those weird "c" as progress indicators...
I'm not a smart man...
Bat is my favorite command to date.
~$ which bat
~$ bat man
tac

I've always wondered what a good use case for tac would be...
Reverse chronological order, mostly
tac log.txt |head # would give you newest first
no good for sort because sort already supports -r
no need it for tail on large files because tail already skips to the end.
I do a lot of impromptu bash to sus crap out of logs.
when you're balls deep in
cat log|grep -v foo| rev|cut -f 1-3 -d \ | |rev
Sometimes tac comes in clutch.
That's fair. I'd usually just use less and drop to the end. My use cases would always need the older log before a newer log though because that's the start of the problem. At least that's how I operate.
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).
Also known as cat abuse.
awww what's a cat without a head and a tail?
I guess depending on your interpretation of without it could either be "cat" or "a".
A kernel?
Fair, but in general I find it way more useful to use cat for piping.
In most cases I'll do something like
cat file | program
cat file | program | grep
cat file | program | grep | cut
This gets more complicated if the file is at the end of the command.
It wouldn't be at the end, since you'd still be piping into program
program <file | grep | cut
And <file program | grep | cut works too
Oh, thanks! Didn't know that
You'll see cat FILE | all the time because it's just a natural start to a pipeline. You cat FILE to see the content unfiltered before filtering it with further commands.
it’s just a natural start to a pipeline

I still like doing cat file.txt | grep thing because I often re-run it to find something else like cat file.txt | grep thing2 - and if I do that with grep, the pattern sits awkwardly in the middle instead of at the end
< file.txt grep thing also works.
is it more obtuse
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
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.
how in the world is this not a useless use of echo and equivalent to <foo.txt
OK, TIL you can just do <foo.txt. I didn't think that worked. Thanks!
So close! you have to do cat < foo.txt :-) (/s)
You can use less. There are also specialized ones for that purpose like bat.
yeah sure but the command is literally written for the humor.
I know, but I just wanted to mention this since a lot of new Linux users end up using cat this way :)
Is there any downside?
I always thought it's
head | cat | tail
It, of course, waits for an input, which brings up the one and only question...
Have you fed your cat?
of course look meow meow so loud
Another all-time favorite:
$ man woman
No manual entry for woman
$ touch woman
touch: cannot touch 'woman': Permission denied
I've been using a slightly customized bash-cat for years now. Still makes me smile when I see it
tac is a cat but faced the other way
ohhh let me check it out lol
whereis cat?
which cat
whatis cat?
man cat
locate cat
man which

rtfm
Programmer Humor
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
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics