Creeping Unix featurism


Doug McIlroy once said, "write programs that do one thing and do it well," but even Linux developers aren't immune to the desire to add more features over time.

We counted the number of options described in the man pages of 16 common commands, and compared them across three Unix/Linux distributions. Read on to see just how some of the core Unix commands have, er, "blossomed" over the years...

The first column below shows the results from the manual for sixth edition Unix, circa 1975. The second column is from the User's Reference Manual for System V Release 4, dated 1990, and third column is from the man pages for Ubuntu 9.04, in 2009. In some cases we had to exercise some judgement about what counted as a separate option, so there's a little give and take on the numbers, but we think the general trend is clear...

Command 1975 1990 2009
cat 0 5 12
cc 6 30 >500 (*)
cmp 2 2 7
cp 0 3 28
date 1 2 9
diff 1 15 27
find 15 23 80
grep 4 8 46
ln 0 3 13
ls 10 23 58
mkdir 0 2 6
mv 0 2 12
ps 4 12 84
rm 2 3 11
sort 6 14 23
wc 0 3 8

* Note: this figure is for the GCC compiler and excludes architecture-specific options.

You should follow us on or Twitter

Your comments

Mike OS will save us

Thankfully when the stripped down new and faster Mike OS takes over we will be back at just what is needed and backwards compatibility will not be an issue.

Re: cat?

We got that from Planet Typo, where all awesome things come from. Fixed now - thanks!

Or don't reinvent the wheel

But the issue is: how many of these are duplicates?

A key Unix principle is 'don't rewrite, reuse.' So adding a feature to an existing command surely keeps the total number of commands down even if the options increase.

GNU's not UNIX

You're not essentially comparing like with like; the GNU tool philosophy is not particularly aligned with the UNIX philosophy. And why should they be? They aren't the same, the clues in the name.

Perhaps a better comparison would be to compare tools from systems that don't use GNU userspace tools - OpenSolaris, or perhaps a BSD - I'm sure you'd still find plenty of feature bloat.


I have noticed this before too. I wince whenever I find myself thinking of using the man pages or even using "--help". I wonder how many of those options are used and how frequently. So much for simplicity and clarity.

Doug McIlroy but we think

Doug McIlroy
but we think the general trend is clear

John Hudson (not verified) - July 1, 2009 @ 8:04pm

Concatenate FILE(s), or standard input, to standard output.

Doug McIlroy wrote:
but we think the general trend is clear

Get real \O/ ...

Yeah, it's called development/improvement over time. One could hardly think of a program like cat as not being of singular purpose. Unlike none Unix like monoliths such as windows etc.

The -u option is likely there so as not to break any legacies that may use it. It would be its' only purpose as far as i would think.

John Hudson (not verified) - July 1, 2009 @ 8:04pm -=- That post basically sums it up.

Concatenate FILE(s), or standard input, to standard output.

And that's what it does.


i think youre reading too

i think youre reading too much into this, for example cat, yes theres 12 options, 2 of which are '--help' and '--version', which i would say are sensible, and certainly don't count as bloat.
'-u' as noted is ignored and probably to maintain backward compatibility, this is the oposite of 'creaping featurism', this is removing features.
'-A','-e' and '-t' are all combinations of other options, you could question the wisdom of adding them but it doesn't add bloat or featurism.
so what we are essentially left with it 6 commands, is that really so bad ? after 36 years?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Username:   Password: