glob
模式(globbing)也被称之为 shell 通配符 , 名字的起源来自于Unix V6中的/etc/glob(详见man文档)。glob 是一种特殊的模式匹配 ,最常见的是通配符拓展 , 也可以将glob模式设为精简了的正则表达式 ,在最新的CentOS 7中已经删除了glob的相关描述文档 , 删除的原因由于glob已经整合到了shell之中, 然后就有了shell 通配符。

:shell 通配符 / glob 模式通常用来匹配目录以及文件,而不是文本!!!

  • 语法

    • * : 匹配0个或者多个字符,比如d*,可以匹配ddlddl

    • ? : 匹配任意单个字符,比如d?,只匹配dd,不能匹配d

    • ~ : 当前用户家目录

      • ~mage : 用户mage家目录

      • ~+ : 当前工作目录

      • ~- : 前一个工作目录

    • 字符集(Character classes): []中的字符,只会被匹配一个,并且[]不可以为空。

      • [abc] : 匹配a,b,c三个中的一个字符。

      • [wang] : 匹配列表中的任何的一个字符

    • 字符范围(Range) :

      • [0-9]:匹配数字范围

      • [a-z]:字母 字母显示顺序为aAbB....这样的顺序

      • [A-Z]:字母

    需要注意的是,如果-出现在开头或者结尾,并不表示range,比如[-a]或者[a-]匹配-,a字符中的一个。

    • ! , ^ : [^list] 匹配指定范围外的任意单个字符或字符集合

      • [^wang]:匹配列表中的所有字符以外的字符

    • {str1,str2,...} : 匹配 srt1 或者 srt2 或者更多字符串,也可以是集合

  • 专用字符集

字符

意义

[:alnum:]

任意数字或者字母

[:alpha:]

任意字母

[:space:]

空格

[:lower:]

小写字母

[:digit:]

任意数字

[:upper:]

任意大写字母

[:cntrl:]

控制符

[:graph:]

图形

[:print:]

可打印字符

[:punct:]

标点符号

[:xdigit:]

十六进制数

[:blank:]

空白字符

  1. 在使用专属字符集的时候 , 字符集之外还需要用 [ ] 来包含住 , 否则专用字符集不会生效 , 例如 [[:space:]]

  2. 在使用花括号 {} 的时候,里面的单个字符串需要使用单引号或者双引号括住 , 否则就会视为多个的单个字符


参考链接

Linux shell 通配符 / glob 模式 - divent - 博客园 (cnblogs.com)


熊熊