A Brief History of The Call Up Command (cu)

(Last Updated On: 2020-09-14)

The call up command, or cu, is an ancient unix legacy for calling up another unix terminal on another device. Sometimes the calling was done literally by phone number to another device’s modem. Although Wikipedia states cu was released in 1983, there are man pages that date back to Unix 7th which was released in 1979. The cu command is available in many popular *nix distributions including MacOS.

BUGS: This program does not work very well.

Amusingly, the bugs section of the man page for cu on MacOS and other distributions state that the program does not work very well.

man cu
       This program does not work very well.

Curious, I reached out to the author of this version, Ian Lance Taylor, to ask what was meant by this comment. According to Taylor, the version he wrote was done on contract with a company that was porting existing software that used cu. Taylor left the comment because his implementation was “bare bones.”

I put the comment in the man page because it’s pretty bare bones; the file transfer works under ideal conditions but doesn’t have any error checking, and of course transfers over modems often have errors.

Thanks to Taylor, this man page Easter egg is a little less mysterious. I was happy to share with Taylor that I find cu to be very useful interacting with a Forth system hosted on a microcontroller and the file transfer worked quite well. Of course, the file transfer in my case was certainly operating under ideal conditions.

Amusing statements about “bugs” are part of the cu legacy. The man page from Unix 7th states “The syntax is unique” under the bugs section.

Who wrote cu?

If Ian Lance Taylor was not the original author of cu, who was? According to Taylor, the original author was Lee E. McMahon, the man who brought us sed. Wikipedia backs up this claim.

Who uses cu today?

cu is still useful for communicating with USB devices. Recently I have used cu to handle transferring files to an Arduino Uno hosting FlashForth and interacting with the Forth interpreter.