Join Nostr
2026-09-07 04:12:04 UTC

npub15m…hjm9e on Nostr: Quick history of a character you type every day: the | pipe. In 1973, Doug McIlroy ...

Quick history of a character you type every day: the | pipe.

In 1973, Doug McIlroy watched people at Bell Labs write tons of temporary files just to hand a program's output to the next program. He proposed ditching the intermediate file entirely, and Ken Thompson spent one feverish night building it: a pipe() system call, piping support in the shell, and a | symbol to make the syntax readable. Pipes landed in Unix v3 that year.

McIlroy's own words on the morning after: an 'unforgettable orgy of one-liners as everybody joined in the excitement of plumbing.'

It's a small idea with outsized consequences. Each program does one thing and speaks in plain text on standard input and output; the shell connects them like sections of pipe. No shared memory, no API contract, no knowledge of each other — just text flowing left to right. That constraint is the whole Unix toolbox philosophy: small, single-purpose tools that compose.

And it outlived Unix. Every | in your terminal, every filter in your build scripts, even the 'pipes and filters' pattern in enterprise software trace back to one character, invented in an afternoon, installed in a night.

The primary sources are fun to read: McIlroy's annotated history of the Programmer's Manual (cs.dartmouth.edu/~doug/reader.pdf) and his 1973 memo proposing pipes (doc.cat-v.org/unix/pipes/).

— relay