Tudo começa com o antigo comando PIP
CP / M - este comando, usado para copiar arquivos, permite que você especifique nomes de dispositivos especiais em vez de arquivos.
Gary Kildall, who developed CP/M, based much of the design of its file structure and command processor on operating systems from Digital Equipment, such as RSTS/E for the PDP-11. Besides accessing files on a floppy disk, the PIP command in CP/M could also transfer data to and from the following "special files":
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:
These were not true device files, however, because their handling was limited to PIP.
Em seguida, o DOS chega no início dos anos 80, um clone do 8086 CP / M destinado a funcionar no então novo IBM PC. O DOS estendeu esse conceito um pouco mais - os arquivos acima eram "especiais" e podiam ser especificados onde quer que um arquivo fosse esperado nos comandos do DOS. Portanto, o comando DOS copy
interno pode ser usado para imprimir um documento executando copy myfile.txt prn:
. (Versões posteriores do CP / M podem ter feito isso, mas duvido.)
Flash forward para Windows 95. Sendo ele próprio construído sobre o DOS, o código que lida com esses nomes de arquivos permaneceu, mas evidentemente não foram integrados muito bem na parte GUI do Windows 95. Ele causou alguns problemas como o bug CON \ CON - e isso era conhecido por causar problemas com o IE também.
Provavelmente por causa da paranóia de outros bugs ocultos (mesmo que nenhum exista em versões baseadas no NT do Windows), a Microsoft decidiu fazer com que o Explorer sempre rejeitasse qualquer tentativa de criar um arquivo com esse nome. É engraçado que mesmo no sistema Windows 8 que estou usando agora, ainda não consigo criar uma pasta chamada "con". (O Windows 10 ainda não permite que você faça isso).