Linux命令行解析
参考:https://wangdoc.com/bash/expansion.html
在terminal中输入命令,shell会先进行模式扩展,然后才会把扩展后的字符串解析为参数传递给命令。
参考:https://blog.csdn.net/weixin_43930641/article/details/105412612
如果执行以下命令:
$ find . -name abc
$ find . -name abc*
$ find . -name “abc*”
$ find . -name “abc*” -print
find 后面的匹配表达式必须要加引号,原因是 find命令 本身是可以解析元字符的 。在执行find的时候如过后面不加引号,那么这个*就被shell解析了,shell去匹配目录中的以 abc开头的文件,匹配到后直接将结果传给find。find接收到的参数就如: find -name abcd abc1 abc2 abc3。如果 find后面的匹配表达式加了引号,shell就不会去解析这个引号,那么这时候就由find去解析。
大括号扩展
https://blog.51cto.com/leomars/1894566
bash支持{a,b,c}这样的扩展
比如a{d,c,b}e会被扩展成ade ace abe
filename{,.bak}被扩展成filename filename.bak
cp filename{,.bak} = cp filename filename.bak
tar cvfz leo{-20170202.tgz,}=tar cvfz leo-20170202.tgz leo
echo a\[{1,2,3}\]} = echo a[1] a[2] a[3]