转: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 说得很清楚:http://blogs.msdn.com/b/larryosterman/archive/2005/06/24/432386.aspx。
相关推荐
- **文件路径**:在 Windows 操作系统中,文件路径通常使用反斜杠 (`\`) 作为目录分隔符,而在 Unix/Linux 系统中,则使用正斜杠 (`/`)。 #### 正则表达式 - 在正则表达式中,反斜杠经常被用来转义特殊字符,使得...
正斜杠通常用于Unix和Linux系统路径分隔符,而反斜杠则多用于Windows系统的路径分隔符。在Java中,路径字符串的处理需要考虑操作系统之间的差异。 正斜杠(/)在Java中是普通的字符,它表示字符‘/’。在字符串中不...
在Windows系统中通常使用反斜杠`\`作为路径分隔符,在Linux和macOS系统中则使用正斜杠`/`。因此,如果您的应用程序需要跨平台运行,那么使用`***bine()`或`Path.DirectorySeparatorChar`属性将是一个更好的选择。 ...
在Linux Shell编程中,了解和掌握单引号、双引号、反引号和反斜杠的区别至关重要,因为它们在处理字符串和命令时起到不同的作用。 1. 单引号(' '): 单引号的作用是告诉Shell忽略其内部的所有特殊字符。这意味着...
然而,随着技术的发展和操作系统兼容性的提高,斜杠和反斜杠在许多情况下可以互换使用,特别是在互联网协议和Web开发中,斜杠被广泛接受。在Web开发中,浏览器地址栏网址必须使用斜杠(/)作为路径分隔符。例如,当...
- **路径分隔符:**Windows 使用反斜杠 `\` 作为路径分隔符,而 Linux 使用正斜杠 `/`。 鉴于这些差异,为了确保程序在目标操作系统(通常是 Linux)上的最佳兼容性和性能表现,建议在 Linux 环境下进行开发工作。 ...
标题提到的"windows复制路径设为‘/’"指的是在Windows环境下设置复制路径时,将默认的反斜杠转换为正斜杠,这有助于在与Unix或Linux系统交互时保持一致性。 要实现这一功能,我们可以借助第三方插件。在提供的文件...
在编程过程中,我们往往会遇到一个小麻烦——微软 Windows 系统在文件夹名之间使用反斜杠字符,而几乎所有其它的计算机(操作系统)都使用正斜杠: 这是由于上世纪 80 年代早期计算机历史上的一个小意外。「MS-...
在网站优化和URL规范化的过程中,有时需要在网站目录后添加反斜杠,这有助于搜索引擎更好地理解和索引网页。本文将详细介绍这一操作的具体步骤以及注意事项。 首先,我们需要确认网站已开启REWRITE规则。REWRITE...
转换工具可能会遇到的问题包括路径格式的转换(Linux使用斜杠,而Windows使用反斜杠)、依赖库的不同处理方式以及编译选项的调整。开发者在使用工具前应确保Linux工程中的所有依赖项都能在Windows环境下找到相应的...
例如,你可能需要将所有相对路径更改为绝对路径,并确保所有的分隔符使用Windows的反斜杠(\)而不是Linux的正斜杠(/)。此外,可能还需要调整一些依赖于Unix工具的脚本。 完成Makefile的修改后,打开命令行窗口,...
Windows使用反斜杠(\),而Linux使用正斜杠(/)。在WSL中,你可以直接使用Windows的文件路径,WSL会自动转换。例如,输入“cd C:\Users\YourUsername”可以进入Windows的用户目录。 总的来说,“windows下使用...
- **路径表示**:Windows使用反斜杠(\)作为路径分隔符,而Linux使用正斜杠(/)。在Java中,路径字符串通常可以使用正斜杠在所有平台上兼容。 - **定时服务**:Windows有`Task Scheduler`,而Linux有`cron`,...
Linux使用正斜杠`/`,而Windows使用反斜杠`\`。可以使用`<cstdlib>`库中的`std::replace`函数处理路径中的反斜杠: ```cpp #include std::string path = "path_to_config_file.conf"; std::replace(path.begin(),...
因此,当移植代码时,所有使用反斜杠的路径都需要修改为使用正斜杠,以确保代码在Linux环境下能够正确解析。这包括硬编码的路径、配置文件、以及任何与文件操作相关的代码。 2. 字符串结尾符: 在C/C++编程中,...
在Linux和Windows之间进行文件操作时,我们可能会遇到一些挑战,如文件路径格式的不同(Linux使用正斜杠,而Windows使用反斜杠),权限管理方式的差异,以及文件系统结构的区别等。以下是一些常用的跨平台文件复制...
4. 可以使用反斜杠“\”来断开一个长命令行,增强命令的可读性。 六、 Vim 编辑器 1. Vim 编辑器有 3 种运行模式:normal 模式、insert 模式和命令模式。 2. 可以使用 Esc 键来切换不同的运行模式。 七、Shell ...
需要注意的是,路径分隔符应使用反斜杠`\`而非正斜杠`/`。 示例命令: ```cmd soffice.exe --headless --convert-to pdf "C:\Users\root\Java.doc" --outdir "C:\Users\root" ``` #### 其他文件格式的支持 除了...
Windows通常使用反斜杠`\`作为分隔符,而Linux使用正斜杠`/`。在移植过程中,需要确保所有文件路径都被正确地转换成Linux格式。 3. **编译器差异**:不同的编译器可能有不同的语法支持和警告提示。例如,从Windows下...
2、\ 反斜杠 3、` 反引号 4、” 双引号 5、< ,>;,*,?,[,] 下面我一一举列说明 一、$符号 1、echo $? 显示的是上一条指令退出状态 2、echo “$?” 效果同上 3、echo ‘$?’ 显示的是$? 4、echo \$? 显示的...