当我创建新文件夹并将其重命名为nul
它时The Specified device name is invalid.
然后我搜索了其他我们无法创建的文件夹,并得到了名称con
,,nul
?prn
这些名称代表什么?为什么我们不能用这些名称创建文件夹?
答案1
一切都始于旧的PIP
CP/M 命令- 此命令用于复制文件,允许您指定特殊的设备名称而不是文件。
CP/M 的开发者 Gary Kildall 的大部分文件结构和命令处理器设计都基于 Digital Equipment 的操作系统,例如 PDP-11 的 RSTS/E。除了访问软盘上的文件外,CP/M 中的 PIP 命令还可以与以下“特殊文件”之间传输数据:
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。
然后,DOS 在 80 年代初期问世,这是 8086 CP/M 的克隆版本,旨在在当时新推出的 IBM PC 上运行。DOS 进一步扩展了这个概念 - 上述内容是“特殊文件”,可以在 DOS 命令中需要文件的任何位置指定。因此,内置的 DOScopy
命令可用于通过执行 来打印文档copy myfile.txt prn:
。(CP/M 的后续版本可能能够做到这一点,但我对此表示怀疑。)
快进到 Windows 95。它本身是基于 DOS 构建的,处理这些特殊文件名的代码保留了下来,但显然没有很好地集成到 Windows 95 的 GUI 部分。它导致了一些问题,例如CON\CON 错误- 并且众所周知这也会导致 IE 出现问题。
可能是因为担心还有更多潜在的错误(尽管在基于 NT 的 Windows 版本中不应该存在任何错误),微软决定让 Explorer 始终拒绝任何创建该名称文件的尝试。有趣的是,即使在我现在使用的 Windows 8 系统中,我仍然无法创建名为“con”的文件夹。(Windows 10 仍然不允许您这样做)。