78 comments

[ 2.8 ms ] story [ 159 ms ] thread
Fascinating, never knew the biff one.
Could it be this was the name inspiration for Mutt?
‘As development progressed, features found in other popular clients such as PINE and MUSH have been added, the result being a hybrid, or "mutt."’

http://www.mutt.org/

It’s great to have a list of what things stand for, but someone needs to make a list of all the puns! A few more that I can think of:

more -> less

pico (pine composer) -> nano

sh (Bourne) -> bash (Bourne again)

yacc -> bison

Could vim be considered a pun? It's just vi improved, but vim itself means "energy / enthusiasm"
Vim used to include a line from Sherman and Sherman's song:

   The wonderful thing about tiggers
   They're loaded with vim and vigor
I didn't know grep! I've seen grep used as a verb enough times that the word "grep" just intuitively seems to describe what it does: grep things.

I was hoping dd would be listed.[0]

Edit: digging a little deeper into [0], there's a Unix Acronym List linked [1]. There seems to be various definitions for dd. One definition says that dd stands for copy and convert, but since cc was already taken for the C compiler, dd was used.

[0]: https://unix.stackexchange.com/questions/6804/what-does-dd-s...

[1]: https://groups.google.com/forum/#!topic/comp.unix.misc/LbLTa...

Isn't dd "disk duplication"?
Or if swap your of and if arguments, disk destroyer. :)
You'd think so, since that's the main thing it's used for anymore. But check the output of --help. Changing case, ascii to ebcdic, doesn't really fit the bill.
You don't re-encode your disk from ASCII to EBCDIC when duplicating it? Have I been doing it wrong all of these years?
casting my harddrive to lowercase does sound like kind of experiment that'd only cross your mind after 6 months of lockdown.
I would start on media files, ideally formats that have a little bit of forgiveness where they'll try to render or play arbitrary sequences of bytes rather than just failing to parse them.
It's actually “convert and copy” but the command name `cc` was already occupied by “C compiler”, so they just incremented each letter to `dd`. `dd` can convert-and-copy any device, not just disks.
As it's inconceivable to conflict both Ritchie and the jargon file when talking about UNIX history, I stand corrected. However, I do remember seeing 'cc was already taken, hence dd' in some old linux documentation.
As can be seen at https://unix.stackexchange.com/q/6804/5132 , this wrong answer is still more popular than the right one that is supported by Dennis Ritchie. A salutary lesson in believing things to be true because they seem humorous or are popular.
Forgive GP for not knowing which Bible to read and at whose altar to prostrate themselves. Like every religion Unix has its goyim and infidels that need to be flogged and flagellated so they can achieve proper enlightenment.
It shouldn't be because it will work with normal files just fine. E.g. if you want to image a disk, `dd if=/dev/sdc of=sdc.img` and silly things like `dd if=/etc/passwd of=/root/~passwd` work too. Also it has a convert function so it's not strictly just for duplication.
Nope. As per Dennis Ritchie's 2004 comment in https://groups.google.com/g/alt.folklore.computers/c/HAWoZ8g... , the "dd" command's name is a joke about the DD ("Data Definition") card in IBM's horrid Job Control Language (JCL). You'd need a DD card for each and every file that your program was going to access, and the name had to be specified ahead of time.

A typical example, from https://programmerspub.com/learn/mainframe/jcl/the-dd-statem... :

  //OUTPUT  DD DSN=PROGPUB.FLATFILE.OUTPUT,DISP=(NEW,CATLG,DELETE),
  //            RECFM=FB,LRECL=80,SPACE=(800,(2,5))
I always liked that dd story but it's probably not true -- it's based on the DD command in IBM JCL, which stood for "data definition".
(comment deleted)
I've also heard disk dump, but this might be a backronym.
Nothing says it can't be both "incremented cc" and "DD from JCL" - especially when you consider the way the options are given, which I've heard from some Bell Labs sources long ago originated as joke on JCL
g/re/p lives on as :g in vim, it's kind of fun to remember its heritage to ed. There is also :v which is analogous to grep -v.
Did anyone else think it was GNU-rep, presumably a reference to an older UNIX command?
Yep. When I was a little sysadminlet, I asked my mentor that exact question. He had a good laugh out of it.
Same--up until now I "knew" that grep stood for "GNU regular expression parser." Always good to have a reminder to question all the other things we "know."
> Always good to have a reminder to question all the other things we "know."

See also the 'HISTORY' section in BSD manual pages, then check their GNU clones.

tac is cat spelled backwards it prints the contents in reverse order.
Is YACC considered a command? Yet Another Compiler Compiler IIRC.
Sure, why not. And unlike roff/nroff/troff it actually made it into POSIX. yacc is part of the optional C-Language Development Utilities command set: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/y...
And it bears mentioning {n,g,t}roff is a reference to RUNOFF, a CTSS formatting program which later made it into other operating systems at least by name if not an actual port. [1]

https://en.wikipedia.org/wiki/TYPSET_and_RUNOFF

I always thought it was quite clever that the macro switch to roff is -m and therefore to format man pages, you run roff -man. Publishing my resume in man format didn't get the reaction I thought it might. Most people just asked for it again in some other format and only one or two people only ever got the joke that a UNIX sysadmin's resume was in -man format.

> cat > Catenate

TIL the words concatenate and catenate exist, although they seem to have almost the same exact meaning

And neither one is “obscure”, by a long shot.
I haven’t heard people use catenate much.
I'd heard of concatenate, but never catenate. I guess concatenate is a verb, and catenate is an adjective.
"Concatenate" seems redundant to me, as the Latin prefix "con" means "together" and the root "caten" is a chain. So technically it's "chain together", but a chain is already a thing that is linked together.

My Latin is rusty, but IIRC "con" can optionally just be added for emphasis, e.g. "iacere": to throw, but "conicere":to hurl. Maybe that's what was done here.

Links in a chain are already together. You absolutely can chain 2 things together that are not the chain itself. Where chain is used as a verb to describe the tying of things together. Saying chain together absolutely makes sence. Example "His ankles were chained together".
I thought maybe they chose "cat"enate to avoid a naming clash with a "con" command but looking back through the early Unix sources there doesn't appear to have been one.
Maybe it was to avoid confusion with Lisp's "cons" which conventionally (or always? It's been a while...) adds to the head of a list, whereas "cat" is a bit closer to adding to the tail. This is pure speculation on my part.
The dictionary defines it as "link together in a chain or series", but in practice on many UNIX systems it's come to mean simply, 'write to stdout' which unless you get into redirection, is just a user's terminal.

I get that the big metaphor was 'small pieces, loosely joined', but this one has always seemed half-baked to me - e.g, it's often too small to be useful without a bit more effort by you, the person typing things.

Hey, some people do use it to combine files!
I'm not arguing that, but to do what most people think of w.r.t what comes to mind when you talk about cat requires redirection.

From the man page:

The command:

           cat file1
will print the contents of file1 to the standard output.

The command:

           cat file1 file2 > file3
will sequentially print the contents of file1 and file2 to the file file3, truncating file3 if it already exists. See the manual page for your shell (i.e., sh(1)) for more information on redirection.
I'll have you know I had to use cat and tac in the way they were intended a few days ago.

I can't remember for the life of me why, but I was shocked.

To be fair, it's still linking one file together with... uh, nothing.
On my Ubuntu laptop, egrep is just a script that calls grep with -E. Did egrep absorb grep? Is the old grep still commonly installed with any distributions?

EDIT: and fgrep also is a script that calls grep, with the F argument.

I think it's common on several distributions for egrep, fgrep, zgrep, etc to all link to (or have small shell wrappers for) grep, which is gnu grep.

I would guess the various BSD distros have traditional separate greps.

No, for a long time the BSDs usually used GNU grep, though there is a newer BSD grep for those who are more concerned about the GPL than performance

FreeBSD bsdgrep https://svnweb.freebsd.org/base/head/usr.bin/grep (see the makefile for build options, and note that it does egrep and fgrep too)

FreeBSD GNU grep https://svnweb.freebsd.org/base/head/gnu/usr.bin/grep/

NetBSD has bsdgrep only http://cvsweb.netbsd.org/bsdweb.cgi/src/usr.bin/grep/ (observe nothing but the Attic in src/gnu/usr.bin/grep)

OpenBSD too http://cvsweb.openbsd.org/src/usr.bin/grep/

4.3BSD-Reno and 4.4BSD are complicated - looks like the Bell Labs separate greps have been moved aside in favour of a replacement unified grep by James Woods (not GNU grep) -https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/sr... - https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.4BSD/usr/src...

There is no grep in 4.3BSD-Net/2 which was the first mostly complete unencumbered BSD release and the original basis of the open source BSDs - https://minnie.tuhs.org/cgi-bin/utree.pl?file=Net2/usr/src/u... - so they adopted GNU grep to fill the gap as you can see in the FreeBSD-2.0 source https://svnweb.freebsd.org/base/release/2.0/gnu/usr.bin/

(comment deleted)
The GNU tool-set merged all three into grep, and kept the fgrep and egrep names for backwards compatibility. This is described in the man page in this manner:

> In addition, two variant programs egrep and fgrep are available. egrep is the same as grep -E. fgrep is the same as grep -F. Direct invocation as either egrep or fgrep is deprecated, but is provided to allow historical applications that rely on them to run unmodified.

That sure sounds like GNU. Instead of building tiny tools that each do one things, just make one big tool that can do a bunch of things depending on which of a hundred flags you use. Not to shit on GNU; I use GNU/Linux on all my own computers. But I notice that a lot of GNU software suffers from severe feature creep.
fdisk - it wouldn't be polite to expand this, but suffice to say it's onomatopoeic if you get the syntax wrong (source: been there, done that).
There is also fsck, which is named after what you say when you need to use it :)
iirc linux fdisk was named after the dos (cpm?) utility of the same name, and so isn't really a unix command.
MS/PC-DOS 2 is when fixed disc partitioning came along.
The true obscura in the history of fdisk is when it became 263044usa8
For anyone interested in the history of UNIX development, Brian Kernhigan's "UNIX: A History and a Memoir" is a quick and enlightening read. I loved the history, and I came away with a better understanding of today's cli environment as well.

https://www.amazon.com/UNIX-History-Memoir-Brian-Kernighan/d...

I found the title a little misleading. A better title might have been "A History of Bell Labs Center 1127".

A large chunk of the book is anecdotes about the people who worked with Mr. Kernhigan, most of which are delightful. I highly recommend the book. There's a huge section on how they had to hack the hell out of their new printer to get it to work properly. Printer drivers have been crap and the hardware cursed since the invention of printers.

Some of these seem fairly intuitive once you learn the origin - others, like "biff", you'd never guess.

> "I can confirm the origin of biff, if you're interested. Biff was Heidi Stettner's dog, back when Heidi (and I, and Bill Joy) were all grad students at U.C. Berkeley and the early versions of BSD were being developed. Biff was popular among the residents of Evans Hall, and was known for barking at the mailman, hence the name of the command."

Considering the command is used for mail notifications, it's actually quite clever.

> Biff was Heidi Stettner's dog, back when Heidi (and I, and Bill Joy) were all grad students at U.C. Berkeley and the early versions of BSD were being developed. Biff was popular among the residents of Evans Hall, and was known for barking at the mailman, hence the name of the command."

For those who are into history, if you want to visit historic Evans hall, where a lot of the early BSD work was done, do it quickly.

They want to tear it down soon. They are already working on plans for replacement and it will be the highest priority building project at UC Berkeley when new construction funding is released. Sadly, the building is seismically unfit.

It's also the ugliest building known to man (and I believe the Unabomber taught there!)
> It's also the ugliest building known to man

It's a brutalist masterpiece, that's for sure.

> (and I believe the Unabomber taught there!)

That is a common myth that even the University pedals, but turns out it's impossible. He taught at Cal in 1969 and the building was erected in 1971.

Turns out he actually taught in the temp buildings the math department was in when the built the building, which have since been torn down.

How about rn (read news (i.e. Usenet)) and then trn (threaded read news)?
dvd as an abbreviation for Dasvidaniya, which in Russian means goodbye. Dasvidaniya is actually two words, not one: до (until) and свида́ния (meeting / date). So literally it means “until the next meeting“. Dasvidaniya is a formal way to say goodbye and should be used with people you don't know and those older than you.(Cribbed with Google's help from learnrussianwords.com.)

dvd removed files in Unix Version 6 and earlier. If memory serves, it operated directly on the file system data structures and was useful for recovering when the file system got "stuck".

Share any references if you got them.

I checked http://man.cat-v.org/unix-6th/ - nothing shows up.

This reminded me of the `clri` command which deletes an inode by number, reclaiming it if it is unlinked in the filesystem, if I remember correctly.

dcheck, icheck, and clri were in 6th Edition. You can read about them in the Fielder and Hunter book on AT&T Unix System 5 Release 4, which describes them as "antiques" that one should only use if one's Unix has no fsck. (-:
"cu" was before my time, I've never used it. But it's still there on my Mac.

I can never remember whether "bc" or "dc" is the program I want when I think I might need a little calculator.