What do you call this | character?

I think that’s my point (though, Dos 1.1 actually had a hard-coded 2nd task for the background printing :smack: ). It took me hours, rather than days, to write a multi-tasking OS from scratch.

Sorry to go so far off-topic. But the way Americans idolize Gates and Microsoft for their “great technological achievements” makes the Birthers and Truthers seem normal!

Care to back that generalization up with some citation?

Microsoft, together with IBM and later the clone-makers, made accessible stuff which until the mid-80s or so had been inaccessible to the average consumer much the same way Henry Ford did decades earlier. Recognition of that fact is merited.

I don’t know anyone who “idolize[s] Gates and Microsoft” for anything.

Is it possible to explain the joke to a non-programmer?

Weirdly, the explanation showed up in a post before the joke:

I did not click the link, thank you.

damned funny, I am not a programmer but I did major in art history, so I laughed.

Someday, I’m going to get a shadowbox, mount a pipe in it with that caption, and hang it on my wall.

I really don’t want to go too far in this direction because I don’t want to put myself in a position of defending (or deriding) DOS as an OS, or DOS command line. But what you are describing is still shell language execution, even though your issue is not about syntax. An OS does a lot more than provide a shell language, such as provides routines to applications to access system resources, manages memory, and scores of things that have nothing to do with how it processes commands from a user.

This is all increasingly off-topic, but I should correct a misconception.

In Unix, fork() and pipe() are ingenious system calls which are independent of shell language. Programs like dump will invoke such calls internally, with no relation to how they were started on the command line.

You’re correct that DOS’ implementation of pipe is a half-assed shell language function. That’s because those system calls do not exist in the half-assed “operating system” DOS.

Disclaimer: I do not keep up with Microsoft’s billion-dollar technology. By now I suppose they’ve caught up with some (but certainly not all) of what Unix had 35 years ago.

I believe this was alluded to above, but the Wiki entry for “vertical bar” has a long long list of how this sign is used in different fields.

It does have a couple meanings: one, to repeat a previous command in your interactive history. Two, as a boolean NOT operator, when inside a square-bracket conditional.

Your keyboard is showing a “broken vertical bar”.

There has long been some confusion over whether that character (ASCII 124) should be rendered as a solid line, or as a broken line with a small gap in the middle. Various printers, video cards, and keyboards have used one form, others have used the other. This inconsistency was more common in the early days of the home computer. Today, mostly, everyone has agreed it’s supposed to be a solid vertical bar.

But here for example is the character set of the original IBM PC, as displayed by the video cards of that time. As you can see, near the end of the fourth line, it appeared as a broken bar.

Lovely. :cool:

OK, then, I didn’t test it very thoroughly, and in the tests I did, it appeared to treat it as just another character. Certainly, though, it doesn’t mean “pipe”, as | does.

What’s the opposite of |?

As a typographer, I feel the need to tell everyone that this is one of those unusual characters (like the backslash) that was invented by computer or teletype people. It didn’t really exist in printing as a separate character until it showed up on computer keyboards that typographers had to use. Only then did these things start being included in typefaces. They still have virtually no use in typography outside of setting programming or mathematical examples.

I’m sure someone will now post examples showing how the previous paragraph is wrong.

I thank you for that, I have worked in the Unix environment but never coded to its system calls. That does shed a different light on things. :slight_smile:

It’s a builtin keyword that negates tests and exit codes, but doesn’t have to be in brackets (although that’s where tests usually reside).

echo hi && echo bye

hi
bye

! echo hi && echo bye

hi

! echo hi || echo bye

hi
bye

if $(true); then echo true; fi

true

if ! $(true); then echo true; fi

Like I said before, the | (and, for that matter, the ) was originally invented for use in character graphics. Those would probably be just as useful in paper typography as on computers.