Linux 通配符和正则表达式
通配符
被shell解释器解释的符号就是通配符,通配符是用来匹配文件名,不能用来匹配字符串(通配符只能用来匹配现有文件的,不能用来生成文件)
通配符一般用的就是以下三个:
1、星号:*
作用:表示任意个字符(不包括隐藏文件)
2、问号:?
作用:单个任意字符(中文也算一个字符)
3、中括号:[ ]
作用:表示匹配一范围或者其中一个
中括号三种使用方法:
(1)表示范围
- [asdfg]: 表示匹配这几个字符中的其中一个
- [0-9]:表示0-9之间的任意一个数字
(2)表示其中之一
- [a-z] :不但包括了小写字母 还包含了大写字母)(次序:小大小大...)
(3)表示不包含
- [^fdsfs] :匹配列表中的所有字符以外的字符
- [^a-z]:匹配列表中的所有字符以外的字符
基本上大多数命令都是直接或间接支持通配符。
例如:ls、cp、grep、rm、mv、find、tar、du(仅用于指定目录路径或特定文件)、cat、chmod、chown等。
linux预定义的字符类:
-
[[:lower:]]:表示任意小写字母,表示 a-z
-
[[:upper:]]: 表示任意大写字母,表示 A-Z
-
[[:digit:]]:表示任意数字,相当于0-9
-
[:alpha:]: 表示任意大小写字母
范例:
# 1、显示/etc目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录列表
l*[0-9]*[[:lower:]]
# 2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录列表
[0-9]*[^0-9]
# 3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录列表
[^a-z][a-z]*
# 4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录列表
rc[0-6]*
# 5、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录列表
[mnrp]*.conf
# 6、只显示/root下的隐藏文件和目录列表
ls -a /root/.*
# 7、只显示/etc下的隐藏目录列表
ls -d /etc/.* (-d表示不进入目录中,只查看目录的本身)
正则表达式
-
正则表达式分为基本正则表达式和扩展正则表达式。扩展正则是基本正则的功能延伸和增强,从而实现更复杂和强大的匹配能力。
-
正则表达式不是被shell解释器解释执行,而是被指定的命令解释,例如grep、ark、sed等
-
如果一个命令只支持基本正则元字符,如果他要使用扩展元字符的话,需要使用转义字符(\)进行转义才行,不然该命令就会把他当成一个普通字符处理。
元字符:含有特定含义的特殊字符就叫做元字符。
基本正则有5个元字符 ^ $ . [] *
1、元字符:^
-
作用:表示以什么开头
-
例如:以为root开头 ^root
2、元字符:$
-
作用:以什么结尾
-
例如:以root结尾 root$
3、元字符:.
-
作用:表示任意一个字符
-
例如:a.b 表示a开头,中间任意一个字符,b结尾的字符
4、元字符:*
- 作用:表示该符号前面的字符出现0次或多次(默认贪婪模式,会找尽可能离它远的)
- 例如:a* 表示a出现0次或者多次
5、元字符:[ ]
- 作用:匹配指定的任意一个字符之一,里面写啥就匹配啥,里面的符号不具备特殊含义(意思就是比如号在基本正则里面表示表示任意一个字符,但是放在中括号里面后,就是号这个字符,不包含其它意思)
元字符[ ]的使用
-
匹配一个字符:例如:[13578] 表示匹配1或3或5或...
-
匹配一个范围:例如:[a-z] 表示字符从a-z之间的任意一个
-
取反:表示不匹配里面的内容 例如:[^abcd] 表示不匹配abcd中的任意一个字符
例如:grep过滤自身进程
ps aux | grep [s]sh
# 解释:grep命令支持基本正则表达式,所以grep [s]sh等价于grep ssh,
# 但是gerp进程里面的参数还是[s]sh(grep --color=auto [s]sh),所以就把gerp进程给过滤掉了。
扩展正则表达式元字符也是5个 + () {} ? |
1、元字符:+
- 作用: 和 * 号对应,+ 号表示的是1次或者多次
2、元字符:?
- 作用:表示左边一个字符出现0次或者1次
- 例如:tom? 表示可以匹配tom或tomm
- 说明:.?是一个特殊的用法,表示把.的贪婪模式变为非贪婪模式
3、元字符:|
- 作用:或者的意思,可以用来连接两个正则表达式
- 例如:a|b 表示a或b,取其中一个
4、元字符:()
- 作用:表示一个整体,可以通过 \n 来取括号里的内容。
- 例如:(tom)(bob)(alice)\2 \2表示得就是第二个括号的内容(bob)
5、元字符:{ }
- 作用:用于规定左边字符出现的次数
- 例如:
{0,} 表示左边的字符出现0或者无穷次,等价于 *
{1,} 表示左边的字符出现1或者无穷次,等价于 +
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了