I often wondered about the circumstance which led to | because it felt
like the oddest pipe in the world to me. Its zero pipe units long, its
just an entry and an exit, bolted together. I thought = would have
been much better. I guess there was a good reason that wouldn't fly.
But then I learned there was some clumsy pre-ur-pipe notations which
bolted what > and < do together somehow. I guess if you were there, it
made perfect sense. Confusing as well that | and || both have to
co-exist in the shell, one for IO redirection and process chaining,
and one for expression short circuit operation. So, clearly a lexer is
in the mix, which means maybe == could have worked. Thats a pipe!
I also had long beer filled arguments about how if | was a process,
not just IO bolting, it could be instrumented. Somebody said I should
do that in tee and I did play with that a bit, putting a box on tee to
say what flowed through the pipe. So, maybe the pipe symbol | could
have been modified to be T and then you had a side flow to monitor on.
Designing things is hard. I guess the reality is, you do the bare
minimum neccessary to make it work. Anything else is adding cost.
(I hesitate to say <- and -> might have worked too. few pipes are
bi-directional. Also, the = is being used in ls -lF to denote what
things are non-normal files...)
G
On Sun, Feb 25, 2018 at 1:07 PM, Doug McIlroy <doug(a)cs.dartmouth.edu> wrote:
> pipe,
ch(e)root.... Any more unix connections to smoking?
I have a slide that's a quadralingual pun (French, English, Art, shell)
in which Magritte's painting of a pipe with the words "Ceci n'est pas
une pipe" has been altered to read "Ceci n'est pas une |". The
altered phrase was borrowed from Jay Misra et al, who used it as
an example of a message in a paper on communicating processes.