[20250118]find命令文件统配符使用引号.txt
[20250118]find命令文件统配符使用引号.txt
--//网上看到的问题,实际上问题许多人包括我自己也经常会犯类似的错误。因为如果没有引号,bash shell会展开解释。
--//通过一个简单例子说明问题:
$ mkdir 202501
$ cd 202501
$ touch a1.txt
$ touch a2.txt
$ echo *.txt
a1.txt a2.txt
$ echo *.aaaa
*.aaaa
--//前者当前目录存在a1.txt ,a2.txt ,当执行echo *.txt时自动展开a1.txt a2.txt。
--//而后者echo *.aaaa ,当前目录不存在匹配该模式的文件,展开的是*.aaaa,有时候find命令执行正常就是这个原因。
--//当前目录没有,而子目录存在,find命令执行正确的情况。
--//做一个特殊的例子说明问题。
$ rm -f a1.txt a2.txt
$ touch +6+
$ echo 2 * 3 | bc
11
$ echo 2 * 3
2 +6+ 3
--//实际上echo 2 * 3展开的是2+6+3 ,这样bc的计算结果就是11.改写如下都是正确的。
$ echo 2 "*" 3 | bc
6
$ echo 2 '*' 3 | bc
6
$ echo 2 \* 3 | bc
6
--//总之,理解好这些细节,就可以规避这些可能遇到的古怪问题,当然不仅仅是find命令。
--//网上看到的问题,实际上问题许多人包括我自己也经常会犯类似的错误。因为如果没有引号,bash shell会展开解释。
--//通过一个简单例子说明问题:
$ mkdir 202501
$ cd 202501
$ touch a1.txt
$ touch a2.txt
$ echo *.txt
a1.txt a2.txt
$ echo *.aaaa
*.aaaa
--//前者当前目录存在a1.txt ,a2.txt ,当执行echo *.txt时自动展开a1.txt a2.txt。
--//而后者echo *.aaaa ,当前目录不存在匹配该模式的文件,展开的是*.aaaa,有时候find命令执行正常就是这个原因。
--//当前目录没有,而子目录存在,find命令执行正确的情况。
--//做一个特殊的例子说明问题。
$ rm -f a1.txt a2.txt
$ touch +6+
$ echo 2 * 3 | bc
11
$ echo 2 * 3
2 +6+ 3
--//实际上echo 2 * 3展开的是2+6+3 ,这样bc的计算结果就是11.改写如下都是正确的。
$ echo 2 "*" 3 | bc
6
$ echo 2 '*' 3 | bc
6
$ echo 2 \* 3 | bc
6
--//总之,理解好这些细节,就可以规避这些可能遇到的古怪问题,当然不仅仅是find命令。
分类:
linux
标签:
bash linux
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)
2023-01-18 [20221227]a mutating table error without a trigger!.txt
2018-01-18 [20180118]tstats的问题.txt