请教高手如何写一个bash补全函数
时间:2011-01-25
来源:互联网
complete -f sdnw的基础上增加一个其它的补全选项,
比如:
首先补全下面这一个选项:
arch/arm/boot/zImage
想要的效果:如果sdnw之后已敲入参数,按文件名的方式补全;如果还没输入参数的话,第一个补全参数是:
arch/arm/boot/zImage
作者: karlzheng_cu 发布时间: 2011-01-25
兄弟,还在研究complete啊。佩服啊。
作者: blackold 发布时间: 2011-01-25
兄弟,还在研究complete啊。佩服啊。
blackold 发表于 2011-01-25 15:31
呵呵,谢谢支持:)
每天都敲命令几十次,没有补全很痛苦...
作者: karlzheng_cu 发布时间: 2011-01-25
兄弟,还在研究complete啊。佩服啊。
blackold 发表于 2011-01-25 15:31
写好了:
- function sdnw() {
- if [ $# -ge 1 ];then
- local filename=$(echo ${1/11111/})
- #sudo dnw $1
- sudo dnw $filename
- fi
- return 0
- }
-
- function _sdnw_complete() {
- local cur=${COMP_WORDS[COMP_CWORD]};
- local com=${COMP_WORDS[COMP_CWORD-1]};
- local j k
- if [[ $COMP_CWORD==1 && -z "$cur" ]];then
- local my_complete_word=(
- "11111arch/arm/boot/zImage"
- "11111/media/x/compiled/uboot-1.3.4-m9_v4/u-boot-dev.signed"
- "11111/media/x/compiled/clean_ver/v4.0/arch/arm/boot/zImage"
- "11111/media/x/compiled/uboot-1.3.4-m9_v4/u-boot-release.signed"
- "11111/media/x/compiled/v4.0-dev/arch/arm/boot/zImage"
- )
- COMPREPLY=($(compgen -W '${my_complete_word[@]}' -- $cur))
- local dir_list=$(compgen -d)
- k="${#COMPREPLY[@]}"
- for j in $dir_list;do
- COMPREPLY[k++]=$j
- done
- else #dir complete
- local k
- COMPREPLY=()
- local dir_list=$(compgen -d -- $cur) k="${#COMPREPLY[@]}"
- for j in $dir_list;do
- COMPREPLY[k++]=$j
- done
- local dir_list=$(compgen -f -- $cur)
- k="${#COMPREPLY[@]}"
- for j in $dir_list;do
- COMPREPLY[k++]=$j
- done
- fi
- return 0
- }
- complete -F _sdnw_complete sdnw
作者: karlzheng_cu 发布时间: 2011-01-25
作者: karlzheng_cu 发布时间: 2011-01-25
有空我看看,如果弄清楚了,就告诉你。

作者: blackold 发布时间: 2011-01-25
有空我看看,如果弄清楚了,就告诉你。
blackold 发表于 2011-01-25 16:43
好:)
作者: karlzheng_cu 发布时间: 2011-01-25
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28