返回首页
当前位置: 主页 > 网络编程 > 其他实例教程 >

正斜杠和反斜杠概述

时间:2017-11-24 11:58来源:知行网www.zhixing123.cn 编辑:麦田守望者

你需要将静态网页和文件放到一个目录(例如/data/www),将图片等文件放到另一个目录(例如/data/images),然后在nginx.conf中进行配置。这需要在http模块下的server模块内新建两个location模块:

 http {
     server {
         location / {
             root /data/www;
         }
         location /images/ {
             root /data;
         }
     }
 }

看起来很好理解吧~也可以直接把文件放到一块,直接location配置绝对路径:

  location / {
      root   F:\webapp\portal;
  }

发现问题了么?上面的代码块root路径都是以斜杠(/)分隔的,下面的代码块的root路径却是以反斜杠(\)分隔的。两种不同的方式却能同样生效,这个是为什么呢?

作为路径分隔符在windows和Unix系统下的区别


在上文中的例子,不论是正斜杠还是反斜杠(\),都是作为路径分隔符存在的,因此我们首先把他们作为路径分隔符,分别在windows和Unix两种不同内核的系统下进行一波测试。

windows(win7 64位系统)下:

 
图0:正斜杠和反斜杠

 

 

windows.png

Unix(Ubuntu 14.04.5)下:

 
图1:正斜杠和反斜杠

 

 

Unix.png

可以看出,Unix内核系统,路径格式仅支持正斜杠(/)分隔,而windows的系统,正斜杠(/)反斜杠(\)都支持,这是个很奇妙的差别。

在查询了资料后,我才知道造成这种差别的深层次原因。

windows的命令行(CMD应用程序)跟早期的MS-DOS操作系统的命令格式是前向兼容的。而DOS系统其实有很多历史遗留问题。

DOS系统很大一部分参考(抄袭?)自加里·基尔代尔的更早的一款操作系统CP/M。

CP/M是数字研究公司(1991年被Novell所兼并)在1974年开发,为8位CPU(如Intel 8080、Zilog Z80等)的个人电脑(PC)所设计的操作系统。在PC市场的黎明阶段,它成为被广泛应用的操作系统。可是因为在向16位CPU的转化上错失机会,在以IBM PC/AT以及IBM PC兼容机为中心的16位PC市场上惨败给Microsoft的MS-DOS,从而从市场上消失。虽然CP/M推出了为Intel 8086而设计的“CP/M 86”以及为Motorola 68000而设计的“CP/M 68k”等版本,但用户几乎不存在。

由于CP/M系统是不支持目录的,/被拿来用作命令行参数的标识符,比如说dir /a, dir /w, dir /q等等(Unix用的是”-“),因此,当MS-DOS系统准备支持目录时,/已被占用,只能使用\来表示路径分隔符了。再后来,windows系统诞生之时,命令行因为要跟MS-DOS兼容,只能把DOS的特性沿用了下来,同时又给支持/作为路径分隔符,于是就造成了现在这种正斜杠(/)反斜杠(\)都支持作为路径分隔符的情况的出现。而Unix不存在这种历史遗留问题,从诞生之初就开始使用斜杠(/)作为路径分隔符,因此,两个系统在这种奇怪的地方出现了分叉。

而我当时的那段代码

  location / {
      root   F:\webapp\portal;
  }

中的root路径,是直接从windows系统中粘贴的路径,因此就会出现这种反斜杠(\)做分隔符的奇怪场景。

对了,在测试过程中还发现了windows系统中使用/和\做分隔符的一个好玩的区别:

  • 使用\做分隔符时,在输入二级子目录(比如\zgit<span style=”color:red”>zblog</span>)时,可以提示补全路径,输入z以后按一下tab就帮我把zblog给补全了
  • 使用/做分隔符时,在输入二级子目录(比如\zgit<span style=”color:red”>zblog</span>)时,并不能提示补全路径,他给我提示的还是1级子目录的列表,在我输入z以后按一下tab,他帮我补了一个zgit,我输入zb,按tab无反应。这实际上根本无可用补全功能。

因此,仅在windows下做目录操作时,还是使用反斜杠(\)做分隔符系统支持度更强些,使用体验也更好一些。

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):正斜杠和反斜杠 正斜杠 反斜杠
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
猜你感兴趣