描述:
通配符是由shell处理的,它只会出现在 命令的“参数”里(它不用在 命令名称里, 也不用在 操作符上)。当shell在“参数”中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符 实际上就是一种shell实现的路径扩展功能。在 通配符被处理后, shell会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。
说明:
以下是常见的通配符:
* 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~username 用户家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配一个数字范围
[a-z] :大写和小写字母
[A-Z] 大写字母
[wxc] 匹配列表中的任何的一个字符
[^wxc] 匹配列表中的所有字符以外的字符
预定义的字符类: :#man 7 glob
[:digit:] :任意数字,相当于0-9
[:lower:] :任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:] :任意数字或字母
[:space:] :空格
[:punct:] :标点符号
示例:
1、显示/var 目录下所有以l 开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
[root@localhost ~]# ls -d /var/test/l*[0-9]*[[:lower:]] /var/test/l80Ab
2 、显示/etc 目录下以任意一位数字开头,且以非数字结尾的文件或目录
[root@localhost ~]# ls -d /etc/test/[0-9]*[^0-9] /etc/test/9A1b
3 、显示/etc/ 目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
[root@localhost ~]# ls -d /etc/test/[^a-z][a-z]* /etc/test/1ab2
4 、显示/etc 目录下所有以m 开头以非数字结尾的文件或目录
[root@localhost ~]# ls -d /etc/m*[^0-9] /etc/magic /etc/man.config /etc/motd /etc/mailcap /etc/mime.types /etc/mtab /etc/mail.rc /etc/mke2fs.conf /etc/mtools.conf
5 、显示/etc 目录下,所有以.d 结尾的文件或目录
[root@localhost ~]# ls -d /etc/*.d /etc/bash_completion.d /etc/modprobe.d /etc/rc6.d /etc/chkconfig.d /etc/pam.d /etc/rc.d /etc/cron.d /etc/popt.d /etc/request-key.d
6 、显示/etc 目录下,所有.conf 结尾,且以m,n,r,p 开头的文件或目录
[root@localhost ~]# ls /etc/[m,n,r,p]*.conf /etc/mke2fs.conf /etc/prelink.conf /etc/mtools.conf /etc/readahead.conf /etc/nfsmount.conf /etc/request-key.conf
结束语:
本篇内容是本人将上课内容进行总结和整理,由于本人初学Linux,难免会有遗漏,请各位达人多多指教