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


  1. [root@localhost ~]# ll
  2. 总用量 48
  3. -rw-r--r--. 1 root root 0 7月 9 2015 \
  4. -rw-------. 1 root root 1414 6月 30 22:51 anaconda-ks.cfg
  5. -rw-r--r--. 1 root root 30147 6月 30 22:51 install.log
  6. -rw-r--r--. 1 root root 7800 6月 30 22:50 install.log.syslog
  7. [root@localhost ~]# vim \
  8. >

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

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

例一:


  1. [root@localhost ~]# echo $HOME
  2. /root
  3. [root@localhost ~]# echo \$HOME
  4. $HOME

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

例二:


  1. [root@localhost ~]# mv test.c \
  2. > ..
  3. mv: 无法获取"test.c" 的文件状态(stat): 没有那个文件或目录

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

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

[root@localhost ~]# vim \\

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

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

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

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

05-11 17:35