Back when this mistake was made, There was only one Phone Company, because they hadn't been broken up yet. Ted Bundy was still on the loose. Babe Ruth's home run record was about to fall.
You could do neat things with it like copy data off the serial port into a text file, or print a textfile right from the command line!
You can get infinite zeros from /dev/zero, random bytes from /dev/random, etc!
So directories? you don't need 'em. Instead of directories, you just use different disks.
So they're just "everywhere", effectively.
So if you have FOO.TXT and need to print it, you can do "PIP LST:=FOO.TXT" which copies foo.txt to the "file" LST, which is the printer.
but what about extensions? Here's the problem: programs like to name their files with the right extension.
but the program might try to put .TXT on the end of your filename! LST.TXT isn't the printer, right?
Eh. It's a hack, but it works, and this is just on some little microcomputers with 4k of ram, who cares?
But it was big, so naturally IBM wanted it for some "PC" project they were doing in early 1980
MS purchased Tim Paterson's project and developed it into PC-DOS (which later became MS-DOS, if you're not aware)
It was definitely inspired by CP/M, in a lot of ways.
So QDOS and PC-DOS 1.0 have AUX, PRN, CON, LPT, etc, too!
You need them to keep your massive 10mb hard drive organized, obviously!
with directories, Microsoft could now make a C:\DEV folder... but they didn't.
Special files are in EVERY DIRECTORY with EVERY EXTENSION.
So your "DIR > LPT" trick to print the directory listing doesn't break because you're in C:\DOS instead of A:\
And when Windows 95 was released, it was built on top of DOS. So it naturally inherited this behavior. (Windows 1/2/3 similarly did, but Win95 was much more an OS than they were)
But Windows NT wanted compatibility with DOS/Windows programs. And XP merged the two lines.
So these special files still work, FORTY FOUR FUCKING YEARS LATER
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9
These special-device names are implemented at the OS level, rather than the filesystem level. So they're perfectly valid NTFS filenames, and I was using an NTFS drive in linux.
A couple follow ups:
1. The CP/M inventor's name is "Gary Kildall", not "Gary Kiddal".
Sorry, I posted this at 5am after being in the hospital for like... 8 hours?
It actually required them to be followed by a colon, as if they were a drive name.
So PRN: is the printer, PRN is not.
I didn't mean to imply CP/M did, just DOS, but I don't think I made this clear
PC DOS 1 did support copying to/from special files though, so my general point was correct, even if my example was confusing
It's like you're living on a space station and get trampled by a horse.