模式扩展
依旧摘自阮大佬的Bash教程,这里仅做个人学习记录。
Shell 接收到用户输入的命令以后,会根据空格将用户的输入,拆分成一个个词元(token)。然后,Shell 会扩展词元里面的特殊字符,扩展完成后才会调用相应的命令。
这种特殊字符的扩展,称为模式扩展(globbing)。其中有些用到通配符,又称为通配符扩展(wildcard expansion)。Bash 一共提供八种扩展。
波浪线~
扩展:波浪线~
会自动扩展成当前用户的主目录? 字符
扩展:?字符
代表文件路径里面的任意单个字符,不包括空字符
比如,Data???
匹配所有Data后面跟着三个字符的文件名。
# 存在文件 a.txt、b.txt 和 ab.txt
$ ls ??.txt
ab.txt
* 字符
扩展 :*字符
代表文件路径里面的任意数量的任意字符,包括零个字符。
# 存在文件 a.txt、b.txt 和 ab.txt
$ ls *.txt
a.txt b.txt ab.txt
方括号[]
扩展:匹配括号[]
之中的任意一个字符
方括号扩展属于文件名匹配,即扩展后的结果必须符合现有的文件路径。如果不存在匹配,就会保持原样,不进行扩展。
(待完成)