自定义补全bash complete

最开始接触shell时觉得命令自动补全功能很强大,但没有深入,今因偶然机遇重新学习竟然看懂了,故记之以作后查。

国外也有英文帖子作例解,但解释更长而且也是个人思路讲解,也不一定有助于自己的理解。

英文水平好的可以直接看bash mannual中Progammable Completion这段即可,耦即是耐着性子看懂了这段英文手册才有了收获。

故这里主要是参照手册来解释,也几乎是翻译了,敬请谅解。

需要注意的是complete仅对identified的name作补全,此name由非数字开头的字母数字下划线组成。

自定义补全时调用complete命令来完成,complete通过选项提供了多种补全的途径和方式,这些选项是按照先后次序起作用的:-A -G -W -F -C -X -P -S -o。

调用complete之后,即定义了compspec,大概可以翻译为补全规范。之后每当按tab键(或其它触发补全的按键序列)时会触发补全机制,即bash根据此compspec来生成候选的补全单词的。可以先来看下complete大概的工作机制和选项定义:

-D:指定后面选项(如-A/-G/-W等)定义的compspec作为默认compspec

-E:指定当命令行为空时的compspec

-A:action,指定动作,这个有固定的几个可选,如alias, arrayvar, buildtin, command等, 在指定动作中找核匹配单词。如果当前正在匹配的单词正好是候选单词的前缀,则返回这些匹配单词。如果有同时指定了-f和-d选项,则shell变量FIGNORE会再过滤(filter-out)这些匹配单词。

-G:globpat,shell glob

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值