文件名通配属于 Bash 的一大特性,通配符只会出现在命令的参数中。当参数中出现了通配符时,shell 将会把他当做路径或文件名去文件系统做匹配,如果符合要求的匹配存在则进行替换,否则这个通配符就只是当做普通字符传递给命令,然后交给命令处理。
常见的文件名通配符
| 字符 | 含义 |
|---|---|
| * | 任意长度的任意字符 |
| ? | 任意单个字符 |
| ~ | 当前用户的家目录 |
| ~user1 | 用户user1的家目录 |
| ~- | 上一个工作目录 |
| ~+ | 当前工作目录 |
| [] | 列表中的任意单个字符 |
| [^] | 列表中的所有字符以外的字符 |
| [0-9] | 任意单个数字 |
| [a-z] | 小写字母 |
| [A-Z] | 大写字母 |
| [0-9a-Z] | 大小写字母及数字 |
| [:lower:] | 任意小写字母 |
| [:upper:] | 任意大写字母 |
| [:alpha:] | 任意大小写字母 |
| [:alnum:] | 任意数字或字母 |
| [:space:] | 空格 |
| [:punct:] | 标点符号 |
| [:digit:] | 任意单个数字,同 [0-9] |
示例
1 | [user1@study ~]$ ls |
注意: 通配符看起来和正则表达式十分相似,但是这两个是完全不同的,不能相互混淆。
参考: https://www.w3resource.com/linux-system-administration/file-globbing.php