V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xell
V2EX  ›  分享发现

原来这就是Windows使用"\"而不是"/"作为路径分隔符的原因啊,终于解了一个心结……

  •  
  •   xell · 2012-03-19 20:40:13 +08:00 · 7335 次点击
    这是一个创建于 4667 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自从频繁地跨平台工作和开发以来,一直对 Windows 系统使用 \ 来作为路径分隔符,使用 / 来作为参数分隔符(dir /W c:\temp,请比较例如 ls -l /tmp)感到不可理解。今天看到了 HN 的讨论 Why is the DOS path character "\"?[1],才恍然大悟。

    简而言之,历史进程是这样的:

    * DOS 2.0 之前,编写命令行工具的程序员来自 IBM 背景,使用 DEC 系统,那里用 / 作为参数分隔符。而当时的 DOS 连多层目录都不支持(真的不支持……),因此不觉得与 *nix 的 \ 有什么冲突。

    * DOS 2.0 及之后,需要支持多层目录了,那么既然 / 已经用做参数分隔符了,于是多方比较之下,最凑手又合情合理的方案就是使用 \ 来分割路径了。就是这样。

    想吐槽的是,这种历史惯性(其他领域也有大量实例)真是让后人为难,并硬生生地制造了无穷无尽的后续问题。写跨平台脚本的童鞋一定都有同感,按下不表了。

    [1] 文中和跟贴中还有一些有趣的事情:

    * 话说 \ 这个字符在英语中原本是没有的,因此它是被生造出来的,这是咋回事?原来,Bob Bemer 当年发明这个符号,是为了能够与 / 合用,在 ALGOL 语言中打出逻辑和以及逻辑或符号 /\ 和 \/ 。哈哈。

    * DOS 暗地里也支持在不致混淆的情形中使用 / 作为路径分隔符,并且 config.sys 中竟然还有一个选项 SWITCHAR= 可以指定自定义的参数分隔符,如果令 SWITCHAR=- ,那么 DOS 就和 *nix 兼容了。(不仅回忆起当年设置 config.sys 来获取扩展内存的时光……)

    [1]: ...
    12 条回复    1970-01-01 08:00:00 +08:00
    bayuwei2010
        1
    bayuwei2010  
       2012-03-19 20:52:15 +08:00
    学习了...
    loading
        2
    loading  
       2012-03-19 21:06:32 +08:00 via Android
    学习了
    shiweifu
        3
    shiweifu  
       2012-03-19 21:08:28 +08:00
    学习了
    airyland
        4
    airyland  
       2012-03-19 21:21:04 +08:00
    原来如此
    liyucai
        5
    liyucai  
       2012-03-19 21:26:54 +08:00
    学习了...
    Digi
        6
    Digi  
       2012-03-19 21:36:21 +08:00
    一直以为是微软故意反其道而行之
    jkeylu
        7
    jkeylu  
       2012-03-19 21:41:09 +08:00
    原来酱紫啊
    lianghai
        8
    lianghai  
       2012-03-19 21:43:49 +08:00
    所以……问题的根源在于 DEC 和 *nix 当初选择了不同的参数分隔符?……
    hemingway
        9
    hemingway  
       2012-03-19 22:03:07 +08:00
    学习了,遗留系统确实会给后续更新造成麻烦
    clowwindy
        10
    clowwindy  
       2012-03-19 22:09:43 +08:00
    dir "c:/windows" /w

    加引号就可以了
    lldong
        11
    lldong  
       2012-03-19 22:30:56 +08:00
    谢谢分享
    jy00566722
        12
    jy00566722  
       2012-03-19 22:33:40 +08:00
    有意思啊,哈哈哈,妈的个C的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2627 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:34 · PVG 15:34 · LAX 23:34 · JFK 02:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.