描述:

通配符是由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,难免会有遗漏,请各位达人多多指教