Original Unix Box Number of Commands
The first edition of Unix had 60-odd commands, as documented in the manual (also available as a web site):
ar ed rkl
as find rm
/usr/b/rc (the B compiler) for rmdir
bas form roff
bcd hup sdate
boot lbppt sh
cat ld stat
chdir ln strip
check ls su
chmod mail sum
chown mesg tap
cmp mkdir tm
cp mkfs tty
date mount type
db mv umount
dbppt nm un
dc od wc
df pr who
dsw rew write
dtf rkd
du rkf
There were a few more commands, such as /etc/glob
, which were documented in another command’s manual page (sh
in /etc/glob
’s case); but the list above gives a good idea. Many of these have survived and are still relevant; others have gone the way of the dodo (thankfully, in dsw
’s case!).
It’s easy enough to read all the Unix V1 manual; I’m not sure it’s worth doing anything like that for a modern distribution. The POSIX specification itself is now over 3,000 pages, and that “only” documents a common core, with 160 commands (many of which are optional) and a few shell built-ins; modern distributions contain thousands of commands, which no single person can learn exhaustively. The last full system manual I read cover to cover was the Coherent manual...
If you want to experience V1 Unix, check out Jim Huang’s V1 repository: you’ll find source code, documentation and instructions to build and run a V1-2 hybrid using SIMH’s PDP-11 simulation. (Thanks to Guy for the suggestion.) Warren Toomey’s PDP-7 Unix repository is also interesting.
(Thanks as always to Stéphane for his multiple suggestions.)
Having worked in large projects with huge APIs and with colleagues who have faced the same issue regarding trying to get an overview of the APIs and databases etc., I'd recommend that you
- Don't try to understand everything, and
- Learn what you need to learn to do what you need to do.
It may be interesting to try to get an overview of what's possible to do in a Unix shell environment, but the easiest way to learn how to do things is to have tasks to solve and to figure out what tools are available to solve these particular tasks.
Asking questions (and/or reading answers) here on the Unix & Linux site may be a good way to study. Answering questions is even better, which includes being corrected and shown better ways of doing things.
Reading lists of utilities, whether standard, ancient, or 3rd party, will likely not be helpful as it won't tell you anything about how to use those utilities in combination with each other to solve actual problems.
Trying to learn everything (or even a small subset) without actively using the tools will most likely lead to confusion.