【SHELL】命令补全
# 指定文件
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】命令补全的更多相关文章
- 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向
8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 什么是shell? shell是一个命令解释器,提供用户和及其之间的交互 致辞特定语法,比如逻 ...
- shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向
第5周第5次课(4月20日) 课程内容: 8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 8.1 shell介绍 使用yum+管道方式查看zsh和ks ...
- Linux centos7 shell 介绍、 命令历史、命令补全和别名、通配符、输入输出重定向
一.shell介绍 shell脚本是日常Linux系统管理工作中必不可少的,不会shell,就不是一个合格管理员. shell是系统跟计算机硬件交互使用的中间介质,一个系统工具.实际上在shell和计 ...
- Linux笔记(shell基础,历史命令,命令补全/别名,通配符,输出重定向)
一.shell 基础 shell是个命令解释器,提供用户和机器之间的交互 每个用户都可以拥有自己特定的shell centos7默认Shell为bash(Bourne Agin shell) 除了ba ...
- fish shell 自动补全子命令
之前在 「创建 fish shell 自动补全文件」 中介绍了如何创建 fish 的补全文件,实现对命令的友好补全提示.通过形如 complete -c <command> -a [&qu ...
- CentOS中使用shell的命令补全
习惯debian的用户都知道shell中的自动补全功能非常实用,其中在CentOS中也可以有同样的功能. 只需要安装 bash-completion 包即可. rpm -ivh http://www. ...
- Linux学习笔记(十)shell基础:历史命令、命令补全、输出重定向、输出重定向
一.历史命令 history [选项] [历史命令保存文件] -c 清空历史命令 -w 吧缓存中的历史命令写入历史命令保存文件~/.bash_history中 系统会默认将上次注销登录(正确退出)之前 ...
- linux命令补全 忘记命令只记得开头
linux的shell不仅提供上下箭头来翻阅历史使用过的命令,还提供命令补全功能. 例如,你想创建一个文件夹,只记得是m开头的命令,此时可以: ①输入m ②按键盘上的Tab键两次 (有可能还出现这句话 ...
- shell自动补全功能:bash和zsh
首要一点:shell有多种,比如bash.zsh.csh.ksh.sh.tcsh等 因此,制作自动补全功能时,要先搞清楚,你使用的是哪种shell,各个shell制作方法是不同的,网上大部分介绍的是关 ...
- bash功能——命令行编辑、内部命令 外部命令、命令补全 、命令历史、文件名通配符、命令别名
命令行编辑: Ctrl + a : 跳转到当前编辑行首 Ctrl + e:跳转到当前编辑行尾 # mkdir /home/dira /home/diab 像这种命令,/home/dira 和 /hom ...
随机推荐
- 华企盾DSC防泄密:PTC Creo程序打开加密文件报错
SolidDesigner.exe(PTC Creo)程序打开加密文件报错,添加的进程不对,任务管理器查看详细信息即可找到进程
- Android辅助功能
1:AccessibilityService 新建service public class AccessibilityService extends android.accessibilityserv ...
- --{module_name}_binary_host_mirror和--{module_name}_binary_site
--{module_name}_binary_host_mirror和--{module_name}_binary_site demo // .npmrc文件 sass_binary_site=htt ...
- MySQL部署后配置
授权root用户登录 #仅本地登录,修改密码用 alter user root@'localhost' identified with mysql_native_password by'******* ...
- mysql的CRUD操作实现
插入语句(INSERT):一旦我们选择了要插入的字段, 我们就必须保证要插入的数值和选择的字段的个数,顺序,类型一致. 1:怎么插入一条数据: INSERT INTO 插入的表名称(列名1,列 ...
- Tpon 1.0 一键查询网站存在过的路径
Tpon 1.0 寻找网站存在过的路径 该工具能够让你发现意料之外的路径 工具描述 编写该工具旨在寻找网站存在过的网站路径,这个地址可能是机器爬下来的也可能是某些人访问过的,在表面你可能看不到它的入口 ...
- 神经网络优化篇:详解指数加权平均数(Exponentially weighted averages)
指数加权平均数 比如这儿有去年伦敦的每日温度,所以1月1号,温度是40华氏度,相当于4摄氏度.世界上大部分地区使用摄氏度,但是美国使用华氏度.在1月2号是9摄氏度等等.在年中的时候,一年365天,年中 ...
- DevExpress源码编译(部分翻译)
环境准备(DevExpress v18.2 ~22.2): vs2015至2022版本 .net framework 4.7.2或更高(实际我们项目用4.5.2可以编译,并不是所有的工程都需要高版本) ...
- Spring系列:基于注解的方式构建IOC
目录 一.搭建子模块spring6-ioc-annotation 二.添加配置类 三.使用注解定义 Bean 四.@Autowired注入 五.@Resource注入 六.全部代码 从 Java 5 ...
- Git使用经验总结3-删除远端提交记录
目录 1. 问题 2. 解决方案 3. 参考 1. 问题 如果将有问题的代码提交到代码仓库甚至已经push到远端,这个时候就得想办法把提交撤销.一种方案是使用git revert,不过会造成历史记录留 ...