文件名通配属于 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