shopt -s extglob
`shopt -s extglob` 是一个 Bash shell 命令,用于开启 Bash 的扩展模式匹配功能。`shopt` 是一个内置命令,用于设置和取消 Bash 的可选项特性。`-s` 参数表示开启(set)某个选项,而 `extglob` 是一个选项名称,代表扩展的模式匹配。
### 详细解释:
1. **shopt**:Bash 的内置命令,用于改变和查看 shell 的可选行为。
2. **-s**:这个参数告诉 `shopt` 命令要开启(set)后面指定的选项。
3. **extglob**:这是 `shopt` 命令的一个选项,用于开启扩展的模式匹配。在默认情况下,Bash 使用基本的模式匹配(globbing),它只支持简单的模式如 `*` 和 `?`。开启 `extglob` 后,Bash 会支持更多的模式匹配符号,如 `@`、`+`、`!` 等。
### 扩展模式匹配符号:
- `?(pattern-list)`:匹配零次或一次 `pattern-list` 中的模式。
- `*(pattern-list)`:匹配零次或多次 `pattern-list` 中的模式。
- `+(pattern-list)`:匹配一次或多次 `pattern-list` 中的模式。
- `@(pattern-list)`:匹配 `pattern-list` 中的一个模式。
- `!(pattern-list)`:匹配除了 `pattern-list` 中的模式之外的任何模式。
### 举例说明:
假设你有一个目录,里面有以下文件:
file1.txt
file2.txt
file3.log
file4.log
1. **基本模式匹配**:
ls *.txt
这将匹配所有以 `.txt` 结尾的文件,输出: