shell中RE(正则表达式)和通配符的区别
通配符功能有限,正则表达式更为强大。通配符只有*、?、[
],分别是0个或多个字符、一个任意字符、[
]括号中的一个字符或不是号中的一个字符[^
]
而正则表达式能表述更多内容,例如:{m,n}
明确指出字符出现的次数、\d,\D(数字、非数字),\s,\S(空格、非空格)等字符表述,还有$,^,\b,等表示位置的符号
正则还可以有环视,判断前面或后面有什么字符或没有什么字符。
linux 通配符%.c和*.c区别
此两者均为通配符,但更准确的讲,%为Makefile规则通配符,一般用于规则描述,如
%.o:%c
$(CC) $
表示所有的目标文件及其依赖文件,或者
$(filter %.c ,SOURCES)
此处SOURCES表示包含.c .cc .cpp等多类型源文件,该过滤器函数将c文件过滤出来,而%.c即为此过滤器规则。
通配符*则不具备上述功能。尤其是在Makefile,当变量定义或者函数调用时,该通配符的展开功能就失效了,即不能正常使用了,此时需要借助wildcard函数。二者应用范围不同。
%.c是GUNmake语法层,表示的是所有以".c"结尾的文件
而*.c则是linux shell 语法层的,比如:rm -f *.o 类似的。
意思基本是一样的,就是一个是GUNmake的一个是shell的
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!