原来这就是Windows使用"\"而不是"/"作为路径分隔符的原因啊,终于解了一个心结…… - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xell
V2EX    分享发现

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

  •  
  •   xell 2012-03-19 20:40:13 +08:00 7741 次点击
    这是一个创建于 4983 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自从频繁地跨平台工作和开发以来,一直对 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     Solana     5071 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 09:38 PVG 17:38 LAX 01:38 JFK 04:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86