Все начинается со старой команды PIP
CP / M - эта команда, используемая для копирования файлов, позволяла указывать специальные имена устройств вместо файлов.
Гэри Килдалл, который разработал CP / M, основывал большую часть дизайна своей файловой структуры и командного процессора на операционных системах от Digital Equipment, таких как RSTS / E для PDP-11. Помимо доступа к файлам на дискете, команда PIP в CP / M также может передавать данные в и из следующих «специальных файлов»:
CON: — console (input and output)
AUX: — an auxiliary device. In CP/M 1 and 2, PIP used PUN: (paper tape punch) and RDR: (paper tape reader) instead of AUX:
LST: — list output device, usually the printer
PRN: — as LST:, but lines were numbered, tabs expanded and form feeds added every 60 lines
NUL: — null device, akin to /dev/null
EOF: — input device that produced end-of-file characters, ASCII 0x1A
INP: — custom input device, by default the same as EOF:
OUT: — custom output device, by default the same as NUL:
Однако это были не настоящие файлы устройств, потому что их обработка была ограничена PIP.
Затем в начале 80-х появился DOS, клон 80 / CP CP / M, предназначенный для работы на новом IBM PC. DOS расширил эту концепцию немного дальше - выше были «специальные файлы», и их можно было указывать везде, где ожидался файл в командах DOS. Таким образом, встроенная copy
команда DOS может быть использована для печати документа путем выполнения copy myfile.txt prn:
. (Более поздние версии CP / M могли бы сделать это, но я сомневаюсь в этом.)
Перенесемся в Windows 95. Сам код, работающий с этими специальными именами, сам по себе был построен поверх DOS, но остался не слишком хорошо интегрированным в GUI-часть Windows 95. Это вызвало некоторые проблемы, такие как ошибка CON \ CON - и это, как было известно, также вызывало проблемы с IE.
Вероятно, из-за паранойи дальнейших скрывающихся ошибок (хотя в версиях Windows для Windows NT их не должно быть), Microsoft решила сделать это там, где Explorer всегда отклоняет любую попытку создать файл с таким именем. Забавно, что даже в системе Windows 8, которую я сейчас использую, я все еще не могу создать папку с именем «con». (Windows 10 все еще не позволит вам сделать это).