zoukankan      html  css  js  c++  java
  • 斜线和反斜线简要历史,为什么windows和unix采用不同的路径分隔符

    斜线和反斜线简要历史,为什么windows和unix采用不同的路径分隔符

     

    / 和

    / 和 ,左为斜线,右为反斜;一个常用的速记法:八字,先撇为斜,后捺为反斜。

    / 和 一般的作用是作为目录分隔符,这些符号在不同的系统下意义不同

    //双斜线协议和主机名之间的分隔符
    /单斜线WEB上或者UNIX环境下的目录分隔符
    反斜线windows 里的目录结构的分隔符,正斜线也可但是也有例外的时候

    历史简述

    1970年左右,Unix系统最先使用正斜线“/”作为目录分隔符。DOS中的大部分工具都是IBM开发的,这些命令工具经常使用“/”作为命令选项的前导,例如“dir /a”,和linux中的 “-”是类似的功能。1981年,MS-DOS1.0推出的时候,根本没有目录的概念,(所有的文件都是直接堆放在磁盘之下?),所以也就没有考虑使用何种分隔符更合适(其实那个时代也不会考虑相互兼容的问题),命令选项前导继续使用“/”。

    1983年发行的MS-DOS2.0复制(wiki Backslash的解释里使用的就是copy这个词)了Unix的文件系统,同时为了保持和MS-DOS1.0的兼容,反斜线也是可以使用的。就是说,在MS-DOS2.0中,大多数情况下,二者是可以混用的,一个例外是COMMAND.COM,这个程序大家可能不太熟悉,他就是Windows NT系列的CMD.EXE的前身,CMD.EXE在不发生歧义的时候,两个符号是通用的。以后的各个版本的DOSWindows为了保持兼容性都保持了这种情况。

    尽管如此,Windows上默认约定的分隔符还是“”,返回路径的API返回的也是“”。

    其他的地方:网络资源和其他操作系统

    网络上资源定位和其他的大部分操作系统都是延续Unix的约定。

    网络资源定位比如HTTPFTP都是使用正斜线,这和服务器类型没有关系,因为协议是这样规定的。

    LinuxUnix-like操作系统,因此延续了Unix的约定。其他的操作系统如Android, Chrome OS, Steam OS都是继承子linux,所以也是使用正斜线。

    同时有两个分隔符显然是很蛋疼的事情,而且普通用户也不想去记住太多的规则。大部分的软件中,如果涉及分隔符,两个符号都是通用的,例如firefox等浏览器和windows资源浏览器,两个符号是通用的。

    需要注意的地方

    CMD.exe

    windowscmd.exe中,不产生歧义的时候,二者通用,例如

    cd ./tools

    cd . ools

    是一样的。

     

    看下面的例子:

    . ools记事本.exe  ./files/text.txt

    cmd例输入上面这个命令的时候,后半部分的./files/text.txt用正反斜线都可以。但是前面的. ools记事本.exe只能使用反斜线。因为前面的内容被当做命令来解析,用正斜线就有歧义了。

    转义符号

    还用做转义符号。例如,当上面的命令是以字符串的方式传递给cmd执行的,就要转义了

    “.\tools\记事本.exe  ./files/text.txt

    DIRECTORY_SEPATRATOR

    开发程序时,特别是web程序,常常需要考虑不同的系统(和web环境),兼容性上考虑,正斜线是都能正确识别解析的,但是有时候问题比这个要复杂,具体问题具体考虑。

    大部分的开发框架都会提供一个DIRECTORY_SEPATRATOR来替程序员解决这个问题,如果有,就尽量使用它。

    参考

    1wiki Backslashhttp://en.wikipedia.org/wiki/Backslash

    2、微软程序员Larry Osterman关于这个问题的文章Why is the DOS path character ""? http://blogs.msdn.com/b/larryosterman/archive/2005/06/24/432386.aspx

    3Why Windows Uses Backslashes and Everything Else Uses Forward Slashes

    http://www.howtogeek.com/181774/why-windows-uses-backslashes-and-everything-else-uses-forward-slashes/

  • 相关阅读:
    POJ1942-Paths on a Grid
    CodeForces 245C-Game with Coins
    codeforces 244B-Undoubtedly Lucky Numbers 搜索
    URAL
    HDU-1134 卡特兰数+java大数模板
    素数线性筛
    KMP讲解
    bzoj 3143: [Hnoi2013]游走
    bzoj 3238: [Ahoi2013]差异
    bzoj 2208: [Jsoi2010]连通数
  • 原文地址:https://www.cnblogs.com/robotech/p/9801334.html
Copyright © 2011-2022 走看看