【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 ...
随机推荐
- postman——请求与相应
一.新建一个项目 直接点击左边栏上面的添加目录图标来新增一个根目录,这样就等于新建了一个项目,我们可以把一个项目或一个模块的用例都存放在这个目录之下,并且在根目录之下我们还可以在建立子目录来进行功能用 ...
- Fiddler使用 抓取手机数据包及中文乱码解决方案
https://blog.csdn.net/zyb2017/article/details/79260086
- 2023-12-30:用go语言,给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数, 如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列。 对于 0 <
2023-12-30:用go语言,给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数, 如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列. 对于 0 & ...
- tty详解
linux下tty命令详解 [功能] 打印连接到标准输入的终端的文件名. [描述] 命令项: -s, --silent, --quiet: 什么也不打印,只是返回退出状态码. --help: 打印帮助 ...
- JavaFx FXML入门(五)
JavaFx FXML入门(五) JavaFX 从入门入门到入土系列 JavaFx的FXML类似安卓中的视图文件,可以添加样式,添加css,添加id然后在java代码中绑定点击事件.可以使用工具编辑: ...
- Java 并发编程(五)读写锁
本文使用的 JDK 版本为 JDK 8 JUC 中关于读写锁的接口定义如下: // java.util.concurrent.locks.ReadWriteLock public interface ...
- [Python急救站]学生管理系统链接数据库
相信很多人在初学Python的时候,经常最后作业就是完成一个学生管理系统,但是我们来做一个完美的学生管理系统,并且将数据储存到数据库里. 我们先看看我们的数据库怎么设置. 首先呢,我选择用的是SQL ...
- .NET技术分享日活动-202107
2021年7月3日下午,个人组织举办了山东地区的第二次山东.NET技术分享日活动.围绕互联网技术.大数据.机器学习.业务实践等方向进行创新技术的实践分享. 本次技术分享日活动面向了山东地区广大的.NE ...
- Rust布道者张汉东倾授,入门Rust初学者都要攻破哪些难点?
摘要:Rust语言学习曲线过于陡峭?初学者看懂这张思维导图,快速入门. Rust语言这两年的热度大家有目共睹,作为一个有着突破性变革意义的语言,其光鲜背后也有诸多质疑,对于想要在系统编程语言上更上一层 ...
- 一文带你搞懂从动态代理实现到Spring AOP
摘要:本文主要讲了Spring Aop动态代理实现的两种方式. 1. Spring AOP Spring是一个轻型容器,Spring整个系列的最最核心的概念当属IoC.AOP.可见AOP是Spring ...