美文网首页
mac封装shell命令自动补全complete

mac封装shell命令自动补全complete

作者: 成功的失败者 | 来源:发表于2019-08-28 15:32 被阅读0次
complete 补全行为选项 命令名[4]
1.-F:执行指定函数名,候选结果保存在 COMPREPLY 数组变量里,补全功能更强大,可以实现命令参数补全,函数名在 /etc/bash_completion定义的。
complete -F my_complete_func my_cmd

2.-f:补全文件名,后可跟 -X 参数。
complete -f my_cmd

3.-X:过滤表达式,符合表达式的文件名会被排除,即不会在补全候选显示出来,如果以感叹号开头,则表示反转,即符合表达式的文件名才显示。

4.-o:补全类型,filenames 表示补全的是一个文件,跟 -f 参数使用才有效;其它值如dirnames 表示补全目录。
complete -o dirnames my_cmd
complete -o filenames -f my_cmd

5.查询当先实现的补全命令
complete
mac电脑案例一:

1.创建cpfrom文件(将文件中的内容复制到剪贴板)

#!/bin/bash 
cat $1 | pbcopy

2.创建cpto文件(将剪贴板内容输出到文件)

#!/bin/bash 
echo "$(pbpaste -Prefer text)" > $1

3.编辑~/.bash_profile

vim ~/.bash_profile
#添加一下内容给下面两个命令自动补全文件:
complete -f cpto
complete -f cpfrom

4.运行测试

#复制1.txt文件中的内容到粘贴板
cpfrom 1.txt
#输出粘贴板内容到2.txt
cpto 2.txt
案例二

1.编辑~/.bash_profile添加以下内容

complete -F copy_complete_func copy
copy_complete_func()   
{  
    local cur prev opts  
    COMPREPLY=()  
    cur="${COMP_WORDS[COMP_CWORD]}"  
    prev="${COMP_WORDS[COMP_CWORD-1]}"  
    opts="help usage version"                                                                                                            
    if [[ ${cur} == * ]] ; then  
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )   
        return 0   
    fi  
}

2.创建copy文件

#!/bin/bash
echo "第一个参数为:$1";
a=$(cat $1)
echo $a

3.运行测试

copy help

参考链接
https://blog.csdn.net/Q1302182594/article/details/52344503

相关文章

网友评论

      本文标题:mac封装shell命令自动补全complete

      本文链接:https://www.haomeiwen.com/subject/pkfmectx.html