我在大学期间使用Unix并现在在Windows方面工作使我很烦。这个决定背后的历史是什么?有人知道为什么会这样吗?
我在大学期间使用Unix并现在在Windows方面工作使我很烦。这个决定背后的历史是什么?有人知道为什么会这样吗?
Answers:
Unix /
在1970年左右的某个时候被引入为目录分隔符。我不知道为什么选择这个字符?祖先系统Multics曾使用过>
,但Unix的设计者已经在shell中>
与一起使用<
来进行重定向(请参见为什么用/
符号来表示根目录?)。
MS-DOS 2.0 \
在1980年代初期作为目录分隔符引入。/
未使用的原因是MS-DOS 1.0(根本不支持目录)已经/
用于引入命令行选项。它采取了这种用法/
从CP / M,它把它从VMS。您可以在Larry Osterman的博客上阅读有关为什么做出该选择的更详尽的解释(MS-DOS甚至暂时可以将选项字符更改为-
,将目录分隔符更改为/
,但并没有坚持)。
/
大多数程序员级别的API(在所有版本的DOS和Windows中)都可以识别它。因此,/
在Windows下使用目录分隔符经常(但并非总是)会遇到麻烦。一个值得注意的例外是,您不能将其/
用作\\?
前缀后的分隔符,即使在Windows 7中,前缀也是使用Unicode或包含260个以上字符来指定路径的唯一方法。
/
在Windows下,某些用户界面元素支持作为目录分隔符,但并非全部。某些程序只是通过底层API传递文件名,所以他们支持/
和\
漠然。在命令解释器中(in command.com
或cmd
),您可以/
在很多情况下使用,但并非总是如此;这部分取决于Windows的版本(例如,cd /windows
可以在XP和7中使用,但不能在Windows 9x中使用)。Explorer路径输入框接受/
(至少从XP开始;可能是因为它也接受URL)。另一方面,标准文件打开对话框拒绝斜杠。
/
被MS-DOS或Windows命令行识别为目录分隔符。
/
了命令行上的确切位置?例如,做dir /p
什么?和dir c:/p
?和c:/windows/notepad.exe
?和start /windows/notepad.exe
?等等(我这里没有Windows计算机可以测试。)
/
在UNIX中可能用作目录分隔符,因为它是在Teletype上使用的简单(不变)键。不变的特殊字符是: - ; , . /
。
/
(以及-
用于交换机)像Xenix,并受Xenix的启发,但是IBM在Microsoft交付给OEM之前发布了,而IBM使用` (and
/用于交换机)。并将提示从更改为A:
,A>
因此他们更改了默认和出厂的错误文档(仍然假设/
/ -
),并加上说明已更改的原因以及原因。
在底层的Windows API可以接受反斜线或斜线的路径的单独的目录和文件的组成部分,但微软的惯例是用一个反斜杠,并返回路径的API把反斜线英寸
MS-DOS 2.0从Unix复制了分层文件系统,因此使用了正斜杠,但是(可能是在IBM的坚持下)添加了反斜杠,以允许在不与MS-DOS 1.0和CP兼容的情况下在命令外壳中键入路径/ M,其中斜杠是命令行选项指示符。
相比
dir/w
它以宽格式显示当前目录
dir\w
这将w
在Director中运行文件dir
。
参考文献: