在macOS系统的终端中,通配符“*”是否区分大小写?
美国、香港服务器
在macOS系统的终端中,通配符“*”是否区分大小写?
09-17 来源:
在 macOS 终端中,通配符 * 的大小写区分行为取决于当前使用的 Shell 及相关配置,默认情况下(未特殊设置时)是区分大小写的,但可以通过配置改为不区分。以下是具体说明:
一、默认行为:区分大小写
macOS 终端默认使用 zsh(较新版本)或 bash(旧版本),这两种 Shell 中,* 通配符默认严格区分大小写,即大写字母和小写字母被视为不同的字符。
示例:
bash
# 当前目录有文件:file.txt、File.txt、FILE.TXT
# 仅匹配小写开头的 file.txt
ls file*.txt # 结果:file.txt
# 仅匹配大写开头的 File.txt
ls File*.txt # 结果:File.txt
此时 * 会严格按照大小写匹配,file*.txt 不会匹配 File.txt 或 FILE.TXT。
二、如何设置为不区分大小写
若需要 * 通配符忽略大小写(即 file*.txt 同时匹配 File.txt、FILE.TXT 等),可通过 Shell 配置实现:
1. 临时生效(当前终端会话)
对于 zsh(默认 Shell):
bash
setopt nocaseglob # 开启不区分大小写匹配
对于 bash:
bash
shopt -s nocaseglob # 开启不区分大小写匹配
开启后,再次执行 ls file*.txt 会匹配所有大小写组合的文件(file.txt、File.txt、FILE.TXT)。
2. 永久生效(所有终端会话)
将配置写入 Shell 的配置文件,每次启动终端自动生效:
zsh:编辑 ~/.zshrc
bash
echo "setopt nocaseglob" >> ~/.zshrc
source ~/.zshrc # 立即生效
bash:编辑 ~/.bash_profile 或 ~/.bashrc
bash
echo "shopt -s nocaseglob" >> ~/.bash_profile
source ~/.bash_profile # 立即生效
三、如何恢复区分大小写
若需恢复默认的区分大小写行为,执行以下命令:
zsh:
bash
unsetopt nocaseglob
bash:
bash
shopt -u nocaseglob
总结
默认情况下,macOS 终端的 * 通配符区分大小写;
通过 setopt nocaseglob(zsh)或 shopt -s nocaseglob(bash)可临时 / 永久开启不区分大小写匹配;
实际使用时,可根据文件命名习惯灵活切换(例如处理 Windows 迁移的不区分大小写文件时,开启不区分模式更方便)。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快