Bash中的扩展Globbing

这篇文章详细介绍了Bashshell中的shopt-sextglob命令,它启用扩展globbing,提供了更灵活的文件匹配和字符串操作。文章通过实例展示了各种扩展操作符如?、*、+、@和!的用法。
摘要由CSDN通过智能技术生成
shopt -s extglob
`shopt -s extglob` 是 Bash shell 中的一个命令,用于启用扩展的模式匹配功能,称为“扩展globbing”。当你启用这个功能后,Bash 会提供额外的模式匹配操作符,使得文件匹配和字符串操作更加灵活和强大。

**详细解释:**

1. **shopt**: 这是一个 Bash 内建命令,用于设置或取消设置 shell 选项。这些选项控制 Bash 的行为。
2. **-s**: 这个选项告诉 `shopt` 启用(set)指定的 shell 选项。
3. **extglob**: 这是 Bash 的一个 shell 选项,当启用时,它会提供扩展的模式匹配功能。

**扩展globbing提供的操作符:**

* `?(pattern-list)`: 匹配零个或一个由 pattern-list 指定的模式。
* `*(pattern-list)`: 匹配零个或多个由 pattern-list 指定的模式。
* `+(pattern-list)`: 匹配一个或多个由 pattern-list 指定的模式。
* `@(pattern-list)`: 匹配 pattern-list 中的任意一个模式。
* `!(pattern-list)`: 匹配任何不匹配 pattern-list 的模式。

**举例说明:**

假设你有一个目录,其中包含以下文件:
file1.txt
file2.txt
fileA.txt
fileB.txt
1. 使用 `?` 匹配以 `file` 开头,后接一个任意字符,再跟 `.txt` 的文件:


```bash
$ shopt -s extglob
$ echo file?.txt
file1.txt file2.txt
```
2. 使用 `*` 匹配以 `file` 开头,后跟任意数量的字符,再跟 `.txt` 的文件:


```bash
$ echo file*.txt
file1.txt file2.txt fileA.txt fileB.txt
```
3. 使用 `+` 匹配以 `file` 开头,后跟至少一个字符,再跟 `.txt` 的文件(与 `*` 类似,但要求至少有一个字符):
$ echo file+.txt
file1.txt file2.txt fileA.txt fileB.txt
4. 使用 `@` 匹配 `file1.txt` 或 `file2.txt`:
$ echo file@(1|2).txt
file1.txt file2.txt
5. 使用 `!` 匹配所有不以 `file` 开头的 `.txt` 文件(在这个例子中,没有这样的文件,但如果有其他 `.txt` 文件,它们会被匹配):
$ echo !(file*.txt)
这些只是扩展globbing功能的一部分。启用这个功能后,你可以更加灵活地处理文件名和字符串匹配。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值