# 指定文件
dodo_path=/home/skull/work/scripts/dodo echo "hello skull" ## COMP_WORDS 是一个 bash 内建的数组变量,它包含了当前命令行中的所有单词
# 例如,如果你输入了 dodo make,那么 COMP_WORDS 就会是 ('dodo', 'make') ## COMP_CWORD 是一个 bash 内建的整数变量,它表示 COMP_WORDS 中当前单词的索引
# 例如,如果你输入了 dodo make 并且光标在 mkae 之后,那么 COMP_CWORD 就会是 2,
# 你已经完成了 dodo 和 make 的输入,实际在第 2 个位置(索引从 0 开始) function define_complete {
# COMPREPLY 是 bash 内建的一个特殊数组,bash 会使用这个数组的内容作为补全建议显示给用户
COMPREPLY=()
# echo -e "\nCOMP_CWORD: "$COMP_CWORD
case $COMP_CWORD in
1)
arg=`grep -w ^"usage: dodo" $dodo_path |grep -o '\[.*\]' |sed -e 's/\[//g'|sed -e 's/\]//g'`
# -W "$arg" 参数告诉 compgen 从 $arg 变量中获取可能的补全选项
# -- ${COMP_WORDS[COMP_CWORD]} 参数指定了当前的部分单词,也就是用户已经输入但还没有完成的那部分单词
# compgen 会从 $arg 中选择那些以当前部分单词开头的选项,作为补全建议
COMPREPLY=($(compgen -W "$arg" -- ${COMP_WORDS[COMP_CWORD]}))
;;
2)
option=`grep -w "dodo ${COMP_WORDS[COMP_CWORD - 1]}" $dodo_path |grep -o '\[.*\]' |sed -e 's/\[//g'|sed -e 's/\]//g'`
COMPREPLY=($(compgen -W "$option" -- ${COMP_WORDS[COMP_CWORD]}))
;;
esac
} complete -F define_complete dodo

【SHELL】命令补全的更多相关文章

  1. 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 

    8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 什么是shell? shell是一个命令解释器,提供用户和及其之间的交互 致辞特定语法,比如逻 ...

  2. shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向

    第5周第5次课(4月20日) 课程内容: 8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 8.1 shell介绍 使用yum+管道方式查看zsh和ks ...

  3. Linux centos7 shell 介绍、 命令历史、命令补全和别名、通配符、输入输出重定向

    一.shell介绍 shell脚本是日常Linux系统管理工作中必不可少的,不会shell,就不是一个合格管理员. shell是系统跟计算机硬件交互使用的中间介质,一个系统工具.实际上在shell和计 ...

  4. Linux笔记(shell基础,历史命令,命令补全/别名,通配符,输出重定向)

    一.shell 基础 shell是个命令解释器,提供用户和机器之间的交互 每个用户都可以拥有自己特定的shell centos7默认Shell为bash(Bourne Agin shell) 除了ba ...

  5. fish shell 自动补全子命令

    之前在 「创建 fish shell 自动补全文件」 中介绍了如何创建 fish 的补全文件,实现对命令的友好补全提示.通过形如 complete -c <command> -a [&qu ...

  6. CentOS中使用shell的命令补全

    习惯debian的用户都知道shell中的自动补全功能非常实用,其中在CentOS中也可以有同样的功能. 只需要安装 bash-completion 包即可. rpm -ivh http://www. ...

  7. Linux学习笔记(十)shell基础:历史命令、命令补全、输出重定向、输出重定向

    一.历史命令 history [选项] [历史命令保存文件] -c 清空历史命令 -w 吧缓存中的历史命令写入历史命令保存文件~/.bash_history中 系统会默认将上次注销登录(正确退出)之前 ...

  8. linux命令补全 忘记命令只记得开头

    linux的shell不仅提供上下箭头来翻阅历史使用过的命令,还提供命令补全功能. 例如,你想创建一个文件夹,只记得是m开头的命令,此时可以: ①输入m ②按键盘上的Tab键两次 (有可能还出现这句话 ...

  9. shell自动补全功能:bash和zsh

    首要一点:shell有多种,比如bash.zsh.csh.ksh.sh.tcsh等 因此,制作自动补全功能时,要先搞清楚,你使用的是哪种shell,各个shell制作方法是不同的,网上大部分介绍的是关 ...

  10. bash功能——命令行编辑、内部命令 外部命令、命令补全 、命令历史、文件名通配符、命令别名

    命令行编辑: Ctrl + a : 跳转到当前编辑行首 Ctrl + e:跳转到当前编辑行尾 # mkdir /home/dira /home/diab 像这种命令,/home/dira 和 /hom ...

随机推荐

  1. 华企盾DSC防泄密系统造成应用程序卡慢、编译卡问题

    1.先看看个人模式是否正常,正常则跟进程有关加密nofile.不启用进程水印.不启用文件夹大小缓存(源码文件去掉需慎重)都关掉.允许进程间访问(procmon排查是否有其它进程访问) 2.检查是否与H ...

  2. Android WebView 缓存处理

    加载html时,会在data/应用下生成database和cache两个文件夹:请求的url存在webviewcache.db下面,url的内容保存在webviewCache下面, Webview的两 ...

  3. 神经网络优化篇:详解梯度的数值逼近(Numerical approximation of gradients)

    在实施backprop时,有一个测试叫做梯度检验,它的作用是确保backprop正确实施.因为有时候,虽然写下了这些方程式,却不能100%确定,执行backprop的所有细节都是正确的.为了逐渐实现梯 ...

  4. 如何找到 niche 出海细分市场的 IDEA

    先说结论就是:看榜单 Why:为什么看榜单? 大家会问为什么?原因很简单: 熟读唐诗三百首,不会作诗也会吟 不天天看榜单上相关的优秀同行,你想干啥 心法就是下苦功夫坚持,量变引起质变,排行榜天天看 竞 ...

  5. NoClassDefFoundError: javax/el/ELManager

    Caused by: java.lang.NoClassDefFoundError: javax/el/ELManager at org.hibernate.validator.messageinte ...

  6. WinDbg实践--入门篇

      WinDbg从字面意思就是Windows+Debug的组合,即Windows平台上的调试工具,可以调试用户模式.内核模式.dump文件等,总之知道它的调试功能非常强大就行了.WinDbg调试命令分 ...

  7. 华为IoT首席架构师王启军:全栈工程师“养成记”

    在王启军的公众号里,有一篇<My Team>的文章,里面记录了早年他所带团队成长的心得. 这个被他称为完美组合的团队,并不是来自大厂名企,彼时王启军给不起高待遇,团队核心成员中还有很多人是 ...

  8. 一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务

    ​​​​本文分享自华为云开发者联盟公众号<一图看懂华为云CodeArts Inspector三大特性,带你玩转漏洞管理服务>. 华为云漏洞管理服务CodeArts Inspector是面向 ...

  9. CodeArts Repo:6大特性助力企业代码稳定可靠安全无忧

    摘要:华为云代码托管服务CodeArts Repo已于2月20日22:00正式上线,这是一款全栈自研.基于Git的云端代码托管服务,旨在保护企业核心代码资产安全,提升企业研发质量和效率. 本文分享自华 ...

  10. 中企出海,用火山引擎DataTester开启增长第一步

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   今年 Google 宣布其提供的A/B测试工具 Optimize 将在2023年9月30号停止服务.在全球化浪 ...