`
小杨学JAVA
  • 浏览: 884746 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Linux下反斜杠号"\"

 
阅读更多

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

 今天在检查home目录时发现有一个名为“\”的文件,觉得很奇怪,从来没见过,就准备用Vim打开看看,很自然地输入命令查看一下,结果居然打不开。

ubuntu@ubuntu:~$ vi \

ubuntu@ubuntu:~$

  稍微思考了一下就明白了,不是打不开,问题出在这个文件名“ \ ”上面。

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

例一: 

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

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

例二:

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

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

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

ubuntu@ubuntu:~$ vi \\

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

 

  这个问题解决了,但是又想到了与反斜线对应的,也是经常用到一个符号:正斜线(“ / ”),再来看看这两个符号的区别。

  在知乎上看到这么个说法:反斜线“\”是电脑出现了之后为了表示程序设计里的特殊含义才发明的专用标点。就是说,除了程序设计领域外,任何地方都不应该有使用反斜杠的时候,请永远使用正斜线“/”。

  粗略想想还真差不多是这么回事,但是马上就想到一朵奇葩:Windows系统中用反斜线“\”来表示目录,但是Linux下用正斜线“/”来表示。估计不少人刚从Windows转到Linux下时都犯过这种错。

  Windows:

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

  Linux和Unix:

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

  网络:

    由于网络使用Unix标准,所以网络路径用“/”。

  

  但是为什么Windows要用" / ",难道只是为了显示和Linux的不同吗?显然不是的,里面历史原因很复杂 ,同样在知乎找到了答案。:)

  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 开始转而使用减号作为命令行参数的起始符。
  MSDN上有一篇 blog 说得很清楚:blogs.msdn.com/b/larryo

分享到:
评论

相关推荐

    linux shell中单引号、双引号、反引号、反斜杠的区别

    shell可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符 反引号字符`的区别,学习shell编程的朋友可以看下

    windows向linux移植中可能会遇到的3个问题

    1.斜杠的调查 在路径中斜杠/和反斜杠/的使用,在WIN下,系统和编译器都能识别正反斜杠,所以...但是在LINUX下,只能识别斜杠/,所以在写代码时,路径分隔符请不要使用反斜杠/,而都应当用斜杠/. 2.字符串结尾符 3.大小端问题

    Python 小技巧 | Windows 文件名非用反斜杠

    在编程过程中,我们往往会遇到一个小麻烦——微软 Windows 系统在文件夹名之间使用反斜杠字符,而几乎所有其它的计算机(操作系统)都使用正斜杠: 这是由于上世纪 80 年代早期计算机历史上的一个小意外。「MS-...

    在网站目录后添加反斜杠具体步骤及注意事项

    首先确认网站开启REWRITE规则;需要注意的是.htaccess文件是Linux下特殊文件,点号前没有任何名称,上传后,默认隐藏,但是可以编辑vi .htaccess

    Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍

    2、\ 反斜杠 3、` 反引号 4、” 双引号 5、< ,>;,*,?,[,] 下面我一一举列说明 一、$符号 1、echo $? 显示的是上一条指令退出状态 2、echo “$?” 效果同上 3、echo ‘$?’ 显示的是$? 4、echo \$? 显示的...

    freetype QT工程 win32 linux

    freetype2.6 win32工程 编译通过 linux平台可用 如果报错,注意下win32宏去掉 斜杠反斜杠注意下

    使用Python解决Windows文件名非用反斜杠问题(python 小技巧)

    要想让你的 Python 代码同时在 Windows 和 Mac/Linux 上工作,你需要处理不同系统文件名用不同斜杠的问题。而 Python 3 有一个名为「pathlib」的新模块,可以帮你解决这个麻烦,需要的朋友可以参考下

    Jenkins集成JMeter接口自动化框架-补充说明.pdf

    建议如果是路径设置,尽量使用反斜杠,在java项目中,斜杠\是需要\\转义的,毕竟最后会在linux 运行使用/反斜杠更ok; 解决路径问题,作为变量传参,在windows-java环境支持/反斜杠路径 2、技术框架的选型,在通过...

    RED HAT LINUX 6大全

    本书全面系统地介绍了Red Hat Linux 6。全书共分为五个部分,包括35章和四个附录。第一部分为Red Hat Linux的介绍和安装;第二部分为服务配置;第三部分为系统管理;第四部分为Linux编程;第五部分为附录。本书内容...

    netcat 瑞士军刀 linux windows netcat 瑞士军刀 linux windows

     注意 GET global.asa 后的反斜杠以及Translate:f头信息。  GET /global.asa\ HTTP/1.0  Host:192.168.0.1  User-Agent:SensePostData  Content-Type:application/x-www-form-urlencoded  Translate:f ...

    Linux expr命令用法详解

    用 / (反斜杠) 放在 shell 特定的字符前面; 对包含空格和其他特殊字符的字符串要用引号括起来 实例 1、计算字串长度 > expr length “this is a test” 14 2、抓取字串 > expr substr “this is a test” 3 5 ...

    Java-File类学习总结

    在Windows系统中使用反斜杠 ‘’ 或者斜杠 ‘/’来当作路径的分隔符,但是使用反斜杠需要注意: 单个反斜杠代表转义字符,所以在使用反斜杠充当路径的分隔符时需要成对出现。 File file1 = new File("E:\\aaa\\1...

    2022最新thinkphp框架源码交易系统/资源网站源码

    2.打开数据库表yjcode_control,将weburlv字段里网址改成你自己的,记得要加上反斜杠,如:http://www.xxx.com/ 这种格式 3.修改根目录下的config.php和config/config.PHP数据库配置文件。 4.登陆后台,清除缓存。...

    PHP常量DIRECTORY_SEPARATOR原理及用法解析

    我们知道DIRECTORY_SEPARATOR是一个PHP常量,代表反斜杠,因为windows系统和linux系统的反斜杠不一样。在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符,在linux上路径的分隔符是”/”。 那么在PHP代码中...

    thinkphp福娃源码交易网站源码

    2.打开数据库表yjcode_control,将weburlv字段里网址改成你自己的,记得要加上反斜杠,如:http://www.xxx.com/ 这种格式 3.修改根目录下的config.php和config/config.PHP数据库配置文件。 4.登陆后台,清除缓存。 ...

    删除、清空指定路径下的文件

    删除、清空指定路径下的文件。经测试在HP UNIX、LINUX、WINDOWS环境下可用,并且可配置计划任务(WIN下是计划任务,LINUX下是CRONTAB)自动定时清空...(如果为Linux系统,则路径是反斜杠,例如 /home/tmp;/usr/tmp等)

    php中常量DIRECTORY_SEPARATOR用法深入分析

    我们知道DIRECTORY_SEPARATOR是一个PHP常量,代表反斜杠,因为windows系统和linux系统的反斜杠不一样。在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符,在linux上路径的分隔符是”/”。 那么在PHP代码中...

    linux:练习Linux

    Linux笔记练习 , ,Visual Studio代码, ~主目录$标准用户#根用户开关:-l =长列表/ -la =详细信息(权限,日期,用户)/ -a =全部ls -a Linux区分大小写文件名中的空格-使用反斜杠\指令指令信息例子目录列出当前...

    wzb56#13_questions_of_shell#3.别人echo你也echo;是问echo知多少1

    事实上,echo除了-n 选项之外,常用选项有:-e: 启用反斜杠控制字符的转换(参考下表)-E: 关闭反斜杠控制字符的转换(预设如此)-n: 取消行末的换行符

    linux find命令之exec简单概述

    为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。 {} 花括号代表前面find查找出来的文件名。 使用find时,只要把想要的操作写在一个文件里,就可以用...

Global site tag (gtag.js) - Google Analytics