You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unix Shell中文件路径使用单引号与不使用引号的区别

为什么Unix终端里有时要用单引号包裹路径?

嘿,作为刚入坑Unix终端的新手,能注意到这个细节真的很棒!其实核心原因很简单:单引号是用来「保护」路径里的特殊字符,不让shell乱解析的。咱们分情况唠清楚:

不需要单引号的场景

当你的路径里全是「安分守己」的字符——比如字母、数字、下划线、斜杠这些,直接写路径完全没问题。比如:

mv Documents/note.txt Desktop/
cp projects/code.py ~/backup/

这时候shell能准确识别出这是完整的路径,不会搞出什么岔子。

必须用单引号的场景

但如果路径里有shell会「过度解读」的特殊字符,单引号就成了必备工具:

  • 路径里有空格:比如你有个文件夹叫Vacation Photos,要是直接写mv Vacation Photos/ archive/,shell会把Vacation当成第一个文件,Photos/当成第二个,archive/当成目标,直接报错找不到文件!用单引号把整个路径包起来:mv 'Vacation Photos/' archive/,shell就会把Vacation Photos/当成一个完整的路径,不会拆分。
  • 路径里有shell特殊符号:比如$、*、?、!、()这些。举个例子,你有个文件叫file$version.txt,直接写cat file$version.txt的话,shell会把$version当成变量去查找,要是你没定义过这个变量,就会变成cat file.txt,完全不是你要的文件!用单引号cat 'file$version.txt',shell就会原封不动地把整个字符串当成路径,不会解析变量。
  • 路径里有特殊符号组合:比如文件名里有&、|这些管道或者后台运行符号,不加单引号的话,shell会把它们当成命令的一部分执行,直接触发错误。比如rm 'file&1.txt'才能正确删除这个文件。

核心区别总结

  • 不加单引号:shell会对路径中的特殊字符(空格、通配符、变量等)进行解析、拆分或替换,可能导致路径不符合你的预期。
  • 加单引号:shell会把引号内的内容当成纯字符串,完全不做任何解析,原封不动地传递给命令,确保路径准确无误。

内容的提问来源于stack exchange,提问作者Patel Parth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:10:59