当前位置: 首页 > wzjs >正文

设计网站页面的工作叫啥关键词搜索工具app

设计网站页面的工作叫啥,关键词搜索工具app,南昌做网站流程,响应式网站开发现状在 Unix 系统中,通配符(globbing)是 shell 的核心功能,用于快速匹配文件或目录。基础通配符(如 *、?、[])虽简单实用,但在复杂场景下往往力不从心。为此,许多现代 shell 提供了“扩…

在 Unix 系统中,通配符(globbing)是 shell 的核心功能,用于快速匹配文件或目录。基础通配符(如 *?[])虽简单实用,但在复杂场景下往往力不从心。为此,许多现代 shell 提供了“扩展通配符”功能,通过特定选项(如 Bash 的 shopt -s extglob 或 Zsh 的 setopt extendedglob)解锁更强大的匹配能力。这些扩展通配符不仅增强了灵活性,还引入了类似正则表达式的语法,使文件操作更加高效。本文将详细介绍 Bash 和 Zsh 的扩展通配符特性,区分其功能与应用场景,并探讨其实际价值,帮助读者全面掌握这一高级工具。


一、扩展通配符的背景与意义

基础通配符在 Unix 系统中由来已久,但其功能局限于简单匹配,无法满足复杂需求,例如否定匹配、递归查找或多条件过滤。为弥补这一不足,现代 shell 引入了扩展通配符,通过额外的配置选项提供更丰富的模式匹配能力。Bash 的 extglob 和 Zsh 的 extendedglob 是其中的佼佼者,它们不仅扩展了通配符的表达能力,还为用户提供了近乎正则表达式级别的控制力。

扩展通配符的意义在于,它将 shell 从简单的命令执行工具提升为强大的文件处理平台。无论是批量操作、日志筛选还是项目管理,这些功能都能显著提升效率。


二、主流 Shell 的扩展通配符详解

1. Bash 的扩展通配符(extglob

Bash 的扩展通配符需通过 shopt -s extglob 启用,提供比基础通配符更强大的匹配能力。

1.1 启用方法
  • 临时启用
    shopt -s extglob
    
  • 永久启用
    echo "shopt -s extglob" >> ~/.bashrc
    source ~/.bashrc
    
1.2 核心语法与功能
  • !(pattern):否定匹配,匹配不符合 pattern 的内容。
  • *(pattern):匹配零次或多次。
  • +(pattern):匹配一次或多次。
  • @(pattern):匹配恰好一次。
  • ?(pattern):匹配零次或一次。
  • 示例
    • ls !(*.txt):列出非 .txt 文件。
    • ls *(a|b):匹配含零次或多次 ab 的文件。
    • ls +(v[0-9]):匹配含一次或多次版本号(如 v1v2)的文件。
    • ls @(test|prod).conf:匹配 test.confprod.conf
    • ls ?(file|dir):匹配 filedir 或空字符串。
1.3 特点与局限
  • 特点:语法直观,适合中等复杂度的匹配任务。
  • 局限
    • 不支持原生递归匹配(需另启用 shopt -s globstar 使用 **)。
    • 语法较繁琐,嵌套能力有限。
    • 无法直接组合多个条件(如排除多类文件需嵌套多个模式)。
1.4 递归扩展(配合 globstar
  • 启用shopt -s globstar
  • 语法**/*.ext
  • 示例ls **/*.sh(递归匹配 .sh 文件)。
  • 说明globstar 是独立选项,与 extglob 可组合使用,但功能仍不及 Zsh。

2. Zsh 的扩展通配符(extendedglob

Zsh 的扩展通配符通过 setopt extendedglob 启用,功能远超 Bash,提供更灵活和强大的匹配能力。

2.1 启用方法
  • 临时启用
    setopt extendedglob
    
  • 永久启用
    echo "setopt extendedglob" >> ~/.zshrc
    source ~/.zshrc
    
2.2 核心语法与功能
  • ^pattern:否定匹配,匹配不符合 pattern 的内容。
  • pattern1~pattern2:匹配符合 pattern1 但不符合 pattern2 的内容。
  • (pattern1|pattern2):分组匹配,匹配任一模式。
  • pattern#:匹配零次或多次。
  • pattern##:匹配一次或多次。
  • **/*.ext:递归匹配子目录(默认支持,无需额外选项)。
  • (#X):修饰符,如 (#i)(忽略大小写)、(#l)(仅小写)。
  • 示例
    • ls ^*.txt:列出非 .txt 文件。
    • ls *.txt~*.old.txt:匹配 .txt 文件,排除 .old.txt
    • ls *(txt|log):匹配 .txt.log 文件。
    • ls *#v[0-9]*.log:匹配含零次或多次版本号的 .log 文件。
    • ls **/*.sh:递归匹配所有 .sh 文件。
    • ls *test*(#i):匹配含 test 的文件,忽略大小写。
2.3 特点与优势
  • 特点
    • 语法简洁直观,操作符(如 ^~)易于理解。
    • 默认支持递归匹配(**),无需额外配置。
    • 支持复杂逻辑组合(如多重排除、分组)。
  • 优势
    • 比 Bash 的 extglob 更强大,接近正则表达式。
    • 与 Zsh 其他特性(如限定符 (#q))无缝集成。

3. 其他 Shell 的扩展通配符(简述)

  • Ksh(Korn Shell)
    • 支持类似 Bash 的扩展通配符(如 !(pattern)),语法与 Bash extglob 接近。
    • 示例:ls !(*.bak)
    • 特点:功能较 Bash 略强,但普及度较低。
  • Fish Shell
    • 不依赖传统扩展通配符,注重简洁性。
    • 使用 ** 递归匹配,但无复杂模式支持。
    • 示例:ls **/*.txt
    • 特点:用户友好,但高级功能有限。

三、Bash 与 Zsh 扩展通配符的对比

特性Bash (extglob)Zsh (extendedglob)
启用方式shopt -s extglobsetopt extendedglob
否定匹配!(pattern)^pattern
排除匹配无直接支持,需嵌套 !(...)pattern1~pattern2
分组匹配@(pattern1|pattern2)(pattern1|pattern2)
重复匹配*(pattern)+(pattern)pattern#pattern##
递归匹配shopt -s globstar 使用 **默认支持 *****
修饰符支持 (#i)
语法简洁性较繁琐更直观简洁
复杂逻辑支持有限强大(如多重排除、嵌套)

结论:Bash 的 extglob 适合中等复杂度的任务,但语法繁琐且功能有限;Zsh 的 extendedglob 则更强大、灵活,特别在递归匹配和复杂逻辑上占据优势。


四、扩展通配符的实际应用场景

1. 文件清理

  • Bashrm !(*.bak|*.tar.gz)(删除除 .bak.tar.gz 外的文件)。
  • Zshrm *~(*.bak|*.tar.gz)(更简洁的排除语法)。

2. 递归查找

  • Bashls **/*.sh(需启用 globstar)。
  • Zshls **/*.sh~*.old.sh(递归匹配非 .old.sh.sh 文件)。

3. 批量重命名

  • Bash
    for f in !(*.old.txt); do mv "$f" "${f%.txt}.new"; done
    
  • Zsh
    for f in *.txt~*.old.txt; do mv $f ${f%.txt}.new; done
    

4. 日志筛选

  • Bashls +(v[0-9]).log(匹配含版本号的日志)。
  • Zshls *#v[0-9]#*.log(更灵活的版本号匹配)。

5. 忽略大小写

  • Bash:无直接支持,需借助 tr 或其他工具。
  • Zshls *test*(#i)(忽略大小写匹配)。

五、使用扩展通配符的注意事项

  1. 兼容性

    • Bash:启用 extglob 后不影响基础通配符。
    • Zsh:^~ 等符号含义改变,可能影响现有脚本。
    • 解决:脚本中明确控制选项(如 setopt noextendedglob)。
  2. 性能

    • 递归匹配(如 **)在大型目录中可能较慢。
    • 解决:缩小范围或结合 find
  3. 调试

    • echo 测试匹配结果,如 echo !(*.txt)echo ^*.txt
  4. 与其他选项的交互

    • Bash:extglobglobstar 可组合。
    • Zsh:extendedglobglobstar 等选项需一致配置。

六、总结

扩展通配符是 shell 功能的重要进化,Bash 的 extglob 提供了实用的增强,而 Zsh 的 extendedglob 则将这一能力推向巅峰。从否定匹配到递归查找,从分组到修饰符,Zsh 的扩展通配符以其简洁性和强大性脱颖而出。无论您是 Bash 用户还是 Zsh 爱好者,掌握这些工具都能让命令行操作更加得心应手。不妨现在尝试启用 shopt -s extglobsetopt extendedglob,体验扩展通配符的魅力!


文章转载自:

http://hkAGLReN.bpxmr.cn
http://zwTfgRNv.bpxmr.cn
http://8qyob6FO.bpxmr.cn
http://LgFcM5GP.bpxmr.cn
http://DCqBr7B2.bpxmr.cn
http://5XV09j3C.bpxmr.cn
http://kA9SDRvO.bpxmr.cn
http://znADl9wd.bpxmr.cn
http://RIgeLHSn.bpxmr.cn
http://xEWTIuGk.bpxmr.cn
http://SMz6eRBs.bpxmr.cn
http://r4VlclZh.bpxmr.cn
http://krdl6AEf.bpxmr.cn
http://0xs4Q5Mq.bpxmr.cn
http://ha26gDaq.bpxmr.cn
http://8CyJJ4tp.bpxmr.cn
http://2gO3vBrx.bpxmr.cn
http://Dhj8glSm.bpxmr.cn
http://U05HaUm7.bpxmr.cn
http://tqkh6fLR.bpxmr.cn
http://ZvGgb6ss.bpxmr.cn
http://4U9iLEXy.bpxmr.cn
http://cMsFMvpx.bpxmr.cn
http://yzmP8AZV.bpxmr.cn
http://ORBmcrKJ.bpxmr.cn
http://M0ASbIYc.bpxmr.cn
http://RxFjozkH.bpxmr.cn
http://T2kL3RYF.bpxmr.cn
http://afBn7XUX.bpxmr.cn
http://cXlBRjL9.bpxmr.cn
http://www.dtcms.com/wzjs/653896.html

相关文章:

  • 门业网站 模板国外包装设计网站
  • 汉中网站开发免费一卡二卡三
  • 做贸易把产品放到哪个网站好呢襄阳今天刚刚发生的新闻
  • 邯郸资讯seo公司如何优化
  • 网站被黑的表现大理建设投资有限公司网站
  • 域名注册以后怎样做网站免费站长工具
  • 襄阳企业网站建设使用unity做网站
  • 手机网站建设地址营销网店推广的软文
  • 怎么做一元抽奖网站设计师 个人网站
  • 嘉定网站建设电脑培训网站网页优化怎么做
  • 打开百度一下网页版宁波关键词优化排名工具
  • 宁波模板建站定制wordpress显示pdf
  • 北京欢迎你网站制作公司电商网站代码模板
  • 青岛网站建设 青岛博采网络绥化市新闻最新消息
  • 大型网站开发团队网络公司排行国内
  • 网站空间知识建设网站免费模板下载
  • 鼎维重庆网站建设专家低代码开发技术
  • 网站 微信开发工作技巧与工作方法
  • 佛山网站建设明细深圳高端网站定制建设
  • 怎样在阿里云做网站xp系统建设网站
  • 在百度上注册公司网站要多少钱wcm 可以做网站吗
  • 南京网站建设优化网站开发用什么开发
  • 佛山制作网站公司吗工商系统企业信用信息查询
  • 石家庄网站建设费用做哪个网站有效果
  • l临沂建设工程信息网站本地wordpress上传图片无法显示
  • 小型公司网络搭建西安百度网站排名优化
  • 网站建设单词wordpress 评论去审核
  • 专业网站建设技术网站建设运营知乎
  • 一分钟用自己的电脑做网站全球速卖通网址
  • 提卡网站要怎么做做电商网站前端用什么框架