你可能有这样的疑问,什么是模式扩展?不要着急,我们在shell里面经常会进行如下操作
cat /home/upupor
来查看 home 目录下的所有以upupor开头的文件,命令中的 就代表着通配符,其代表着扩展. 当然bash中的扩展远远不止 *
一种,bash中一共有以下几种扩展:
- 波浪线扩展
?
字符扩展*
字符扩展- 方括号扩展
下面就简单的介绍着几种扩展的用法
- 波浪线扩展
~
回到当前用户的主目录,我们经常的操作 cd ~
进入当前用户的主目录 ?
字符扩展 代表文件路径里面的任意单个字符,如果要代表多个字符就连续输入几个?
即可, 举个例子可能你们就懂了 ,例如 ll upup???
这个只能展示7个字符,可能是 upupor、upup.md等*
字符扩展,这个就不用多介绍了吧,通配符,匹配任意数量的字符,同样的拿 ll upup*
举例,可能会匹配到 upupor、upupor.txt、upuporf23r3r3等等- 方括号扩展
[...]
匹配当中的任意一个字符,这种扩张我经常会匹配我知道有哪些文件, 比如有 upupor1.txt upupor2.txt upupor5.txt 我如果要进行范围匹配就会使用 ll upupor[1-9].txt将文件匹配出来。当然这个也可以写多个,[up][or][20]
匹配出uo2,up0等等。划重点:方括号扩展还有两种变体:[^...]和[!...]。它们表示匹配不在方括号里面的字符,这两种写法是等价的。比如,[^abc]或[!abc]表示匹配除了a、b、c以外的字符。
前面说的upupor[1-9].txt中的[1-9]属于是范围扩展,匹配1-9之间的任意一个字符。
大括号扩展
变量扩展
子命令扩展
算术扩展