From mboxrd@z Thu Jan 1 00:00:00 1970 From: norman@nose.cs.utoronto.ca (Norman Wilson) Date: Thu, 23 Jan 2003 22:09:51 -0500 Subject: [TUHS] The ^ = | ? Message-ID: The earliest UNIX Programmer's Manual to describe shell pipelines is the Third Edition, February 1973. It gives a syntax quite different from the modern one: com1 > com2 > com3 > outfile meant what we would now write as com1 | com2 | com3 > outfile This original syntax was pretty cumbersome; pretty obviously it was put in as a quick hack (as were many things in those early days). Because > and < applied only to the following word, pipelined commands with arguments had to be quoted: who > "grep ken" >/tmp/kenlogins Even worse, the shell had no inherent way to tell whether the final word was a file or a program; if the last element in a pipeline was to write to standard output, you had to say so explicitly: who > "grep ken" > On the other hand the syntax was symmetric: you could also write "grep ken" < who < pipe(II) also debuted in the Third Edition. By the Fourth Edition (November 1973) there had evidently been more time to think about the syntax; the modern notation is shown, except that ^ is allowed as a synonym for |. I have long guessed that was because in those dark days of the past, some upper-case-only terminals (remember stty lcase?) offered no way to type | (and perhaps likewise {}`~) but I don't really know. Dennis? Norman Wilson Toronto ON