在自己的bash脚本中实现自动补全

在90年代Linux和DOS共存的年代里,Linux的Shell们有一个最微不足道但也最实用的小功能,就是命令自动补全。而DOS那个笨蛋一直到死都没学会什么叫易用。

Linux的这个微不足道的小传统一直延续至今。虽然看似微不足道,其实也极大的提高了管理员的输入效率和准确性。

如果需要在自己的脚本中实现自动补全的功能,只需要编写类似下面的一个脚本,每次用户登录后source下就可以了。

这个示例是公司的通道机上,可以根据名称来登录相关的服务器,但是服务器名称又长又难记,每次输入都很麻烦。于是有了这个自动补全脚本:

tongdaoji() 
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="java.vm swift.sa openstack.zf shanghai venusweb database"

    if [[ ${cur} == * ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}

complete -F tongdaoji e


把这个脚本放在每次登录可以自动执行的地方,比如~/.bashrc或者/etc/bash_completion.d/。于是以后只要输入

e o<TAB>

就可以得到

e openstack.zf

了。

猜你喜欢

转载自blog.csdn.net/ffb/article/details/9194711
今日推荐