Linux中的通配符

本文介绍了Bash Shell如何使用正则表达式的元字符实现通配符功能,详细讲解了*、?、[]、{}等通配符在Bash中的意义,并通过ls命令举例说明了它们的使用方法。同时,提到了通配符可能导致的安全问题,以及服务器如何限制通配操作以提高安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Bash Shell本身不支持正则表达式,使用正则表达式的是Shell命令和工具,如grep, sed, awk等,但是,Bash Shell可以使用正则表达式中的一些元字符实现通配(Globbing)功能,通配是把一个包含通配符的非具体文件名扩展存储在计算机、服务器或网络上的一批具体文件名的过程。最常用的通配符包括正则表达式字符:?, *, [], {}, ^等。这些元字符在通配中的意义与正则表达式中的意义不完全一致,*符号不再表示其前面字符的重复,而是表示任意位的字符,?字符表示一个任意字符,^符号在通配中不代表行首,而是代表取反。下面以ls命令来举例通配符的使用:

#列出以.awk结尾文件的详细信息

ls -l *.awk

#列出以0开头、后面跟1个字符且以.pem为后缀的文件,

ls -l 0?.pem

#列出以a~h范围内字母开头,以.awk结尾的文件

ls -l [a-h]*.awk   #[]符号的意义与正则表达式中的[]符号的意义一样

#通配中的{}符号表示一组表达式的集合,{}符号内的表达式是"或"的关系

ls -l {[a-h]*.awk,0?.pem}  #表达式之间不能有空格

通配的结果由计算机搜索大量的文件和目录进行匹配而输出,通配对处理能力和内存资源有很高的需求。黑客输入包含通配符的文件名故意让服务器重复和连续不断地进行通配可能引起拒绝服务攻击。因此,大型服务器经常通过限制服务器执行通配功能的次数、限制一个具体用户每次输入的通配符或者如果通配符太普通,则拒绝执行通配等方法来提高服务器的安全性。

内部变量GLOBIGNORE保存了通配时所忽略的文件名集合,应该说,?,*,[],{},^五个符和GLOBIGNORE变量构成了Shell通配的所有内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文宇肃然

精神和物质鼓励你选一个吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值