You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

zsh中glob模式匹配异常:为何指定命令未返回预期文件?

zsh通配符匹配结果不符预期的原因分析

先拆解你使用的通配符模式.*sh*c*[cke](.)的具体规则:

  • .*:匹配以.开头的任意字符序列(自动排除.和..)
  • sh:要求文件名中包含子串sh
  • c:要求文件名中sh之后的位置必须出现字符c
  • *:匹配任意长度的字符序列(包括空字符)
  • [cke]:要求文件名最后一个字符必须是c、k或e
  • (.):zsh的glob限定符,仅匹配普通文件(排除目录)

接下来逐个分析四个文件的匹配情况:

匹配成功的文件

  • .sh_once:
    文件名包含sh子串,且包含c(once中的c),最后一个字符是e(符合[cke]规则),完全满足通配符要求,因此被匹配。
  • .zshrc.mbook:
    文件名包含sh(zsh中的sh)和c(zshrc中的c),最后一个字符是k(mbook的结尾),符合[cke]规则,因此被匹配。

匹配失败的文件

  • .zshrc:
    虽然文件名包含sh和c,且最后一个字符是c(符合[cke]),但通配符要求sh之后出现的c必须位于最后一个字符之前——也就是c后面需要有至少一个字符来匹配[cke]。但.zshrc的c就是最后一个字符,没有多余字符满足这个要求,因此不匹配。
  • .bashrc:
    同理,文件名包含sh(bash中的sh)和c(rc中的c),但c是最后一个字符,无法满足c之后有字符匹配[cke]的要求,因此不匹配。

内容的提问来源于stack exchange,提问作者user1934428

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:55:57