Think of it as evolution in action
cat(1), Unix version 3:
- NAME
- cat - concatenate and print
- SYNOPSIS
- cat file ...
- DESCRIPTION
- cat reads each file in sequence and writes it on the standard output.
cat(1), bleeding edge gnuware:
- NAME
- cat - concatenate files and print on the standard output
- SYNOPSIS
- cat [OPTION] [FILE]...
- DESCRIPTION
- Concatenate FILE(s), or standard input, to standard output.
- -A, --show-all
- equivalent to -vET
- -b, --number-nonblank
- number nonblank output lines
- -e
- equivalent to -vE
- -E, --show-ends
- display $ at end of each line
- -n, --number
- number all output lines
- -s, --squeeze-blank
- never more than one single blank line
- -t
- equivalent to -vT
- -T, --show-tabs
- display TAB characters as ^I
- -u
- (ignored)
- -v, --show-nonprinting
- use ^ and M- notation, except for LFD and TAB
- --help
- display this help and exit
- --version
- output version information and exit
It's evolution, all right, if your idea of evolution is the nonstop bolting on of shiny, but completely useless, trinkets. And it's not just the festering pit of gnuware that does this, either; FreeBSD has a cat that is draped with a plethora of shiny twinkly options, and it is not redeemed in the least by having a functional -u flag.
The cat I wrote for Mastodon-next is 66 lines long, and that includes the copyright (“This code is in the public domain”) and a conditional "copy via mmap" mmap() function (the v3 cat is about the same size, but it's written in a very-pre K&R C, so it can't be compared as accurately.) The gnuware cat, on the other hand, is over an order of magnitude longer, and that's not including the applications library that's linked with the horrible thing.
But my cat doesn't have useful options like --version or --help, or a manpage that helpfully chirps “look in the info file!”, so it's obviously inferior.
*shudder*