正斜杠“\"与反斜杠”/“【转载总结+自己编写】

正斜杠“/”与反斜杠”\”


 


 

基础知识

正斜杠,又称左斜杠,符号是"/"。反斜杠,也称右斜杠,符号是"\"。

记忆方法:关于这两个的辨别记忆,可以想一想乒乓球的正手与反手打发。

 使用说明

windows系统:反斜杠“\“用来表示目录;正斜杠“/”用来表示网址、Url地址。

“/”是表示参数,“\”是表示本地路径。

DOS路径:
C:\WINDOWS\SETTING   ..这是反斜杠的作用后面跟着的是文件名
C:\dir /P       ..这就是正斜杠后面是一个命令的参数,dir        是命令

unix系统:正斜杠“/”表示目录。由于web遵循unix命名,所以在网址(URL)中,正斜杠“/”表示目录。

“/”表示路径,“\”表示转义,“-”和“--”表示参数。

反斜线符号“ \ ”在Bash中被解释为转义字符,用于去除一个单个字符的特殊意义,它保留了跟随在之后的字符的字面值,除了换行符。如果在反斜线之后一个换行字符立即出现,转义字符使行得以继续,遇到命令很长时使用反斜线很有效;反斜线从输入流中被移除并有效地忽略。

例一: ubuntu@ubuntu:~$ echo $HOME
/home/ubuntu
ubuntu@ubuntu:~$ echo \$HOME
$HOME

例子中,反斜线去除了“ $ ”字符的特殊意义,保留字面值,从而不输出home目录路径。

例二:

ubuntu@ubuntu:~$ mv test.c \
> ../Downloads/

               例子中,反斜线使行得以继续,命令可以正常输入。

例三:

到这里就明白了怎么查看文件名为“ \ ”的文档了,只要输入命令

ubuntu@ubuntu:~$ vi \\

就可以了,前一个反斜线保留了后一个反斜线的字面意思,即作为文件名输入了。

 

记忆方法:注意window这个单词的第一笔,也就是字母w的第一笔,是什么?没错,就是反斜杠,这样每次在想windows文件路径中用/还是\的时候,首先要想到windows的第一笔是什么,答案自然就出来了。作为windows的对立面,linux或unix文件路径中用的自然就是/ 了。

编码注意

C++转义字符


在获取文件路径的时候 很多人喜欢用"d:\test.txt",然后就会发生所谓的转义字符错误了。原因就是因为在此处“\test”中的“\t“转化为了TAB。从而导致打开文件失败。

在代码中,fp = fopen("D:\\D\\Dtest.log","r+");

fp = fopen("D:/D\\Dtest.log","r+");

fp =fopen("D:D\\Dtest.log", "r+");

 

效果相同,都可以打开文件。

在cmd.exe中,如下:


但是,看到这我有两个疑问:

1,         fp =fopen("D:D\\Dtest.log", "r+");

D:后面不带路径符号也可以吗?为什么?

2,         在CMD中,执行type D:D\test.log,

此处的“D:D\test.log”是不是作为参数传入的?其中的“\test”处的\t,为什么不是作为转义字符传入,为什么仍然能打开文件?

相关知识

相对路径:相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。


从C:\log文件夹进入C:\Users\zhang-xch文件夹,需要输入cd ../Users\zhang-xch

注意:相对路径的文件夹符号是斜杠:/

绝对路径:在www中(广域网),以http开头的链接都是绝对路径。

物理路径:物理路径指的是某一台计算机本地的路径,以盘符开头,例如C:\、D:\temp等等

历史问题

Windows用反斜杠(“\”)的历史来自 DOS,而 DOS 的另一个传统是用斜杠(“/”)表示命令行参数,比如:

cd%SystemDrive%

dir/s /b shell32.dll

既然DOS 这边斜杠被占用了,只好找一个最接近的。那就是它了。而在 UNIX 环境中,我们用减号(“-”)和双减号(“--”)表示命令行参数。

用斜杠表示命令行参数是兼容性原因。这个问题最初起源自 IBM。IBM 在最初加入 DOS 开发时贡献了大批工具,它们都是用斜杠处理命令行参数的。而这个传统源自于 DEC/IBM,比如当年的 VMS 就是用斜杠处理命令行参数,它的目录分隔符是美元符(“$”)。顺便说一句,这个传统也被部分地继承进了 DOS 和 Windows 体系,日文版的 Windows 就把反斜杠在屏幕上显示为“¥”,虽然实际上还是反斜杠。

如今的Windows 内核在处理路径时确实可以同时支持斜杠和反斜杠。很多时候我们看到用斜杠时出错,是因为应用程序层面的原因。比如 cmd.exe 就不支持用斜杠表示路径,而PowerShell.exe 支持,也正因为这个原因,PowerShell 开始转而使用减号作为命令行参数的起始符。

由此也可以看出Windows或者说DOS在设计初期考虑不够 周全,为了和Unix一些特征区别开来,将Unix中的正斜杠"/"分隔路径方式改变成了反斜杠"\"。这样改变导致的一个问题就是在早期DOS命令行 中,正常的文件名是不能包含空格的,如果包含了空格,会导致输入这样的文件名时,命令解析无法将其和参数区分开。例如,想要进入"hutaow yuan"这个目录(在此先忽略8.3命名规则),直接输入"cd hutaow yuan",命令行会将其解析为进入"hutaow"目录,而后面的"yuan"做参数,这显然不是所期望的。【目前在cmd中,将带空格的文件名称做了如下处理】


  而在Unix中,文件名如果包含空格,可以直接在空格前加上反 斜杠"\"进行转义,从而很好的和命令参数区别出来(参数之间一般使用空格分隔)。还是上面的例子,在Unix中,只要输入"cd hutaow\ yuan"(在yuan前面的空格前加上"\"),命令行会正确的辨认出"hutaow yuan"并进入这个目录。

当然,现在Windows的后续版本已经使用其它方法(比如文件名用双引号括住)解决了空格问题。


 

参考文献

http://bbs.phpchina.com/blog-161632-182217.html

http://www.360doc.com/content/10/1025/14/1066008_63853709.shtml

http://6871829.blog.51cto.com/6861829/1166725

http://blog.csdn.net/kobesdu/article/details/8811126

http://blog.csdn.net/ylchou/article/details/7437809

http://www.cnblogs.com/MuyouSome/p/3426119.html

http://www.cnblogs.com/lyfblog/archive/2011/03/24/1993480.html

 


  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值