Shell自动化Tab键补全脚本

Shell自动化Tab键补全脚本

简介

本文介绍了在 Bash shell 中如何实现脚本自动化补全的功能,并给出了一个实例代码。

背景

在使用命令行操作系统时,我们经常需要在终端中输入命令来操作系统或者应用程序。当我们的输入命令越来越复杂时,我们往往会遇到诸如命令拼写错误、命令参数不正确等问题。而脚本自动化补全可以帮助我们避免这类问题的发生。

实现过程

脚本自动化补全的实现依赖于 Bash shell 的自动化补全功能。自动化补全功能的实现需要做两件事:

定义自动化补全函数,即在输入命令时,根据当前输入的字符串,返回匹配的命令或参数列表;
将自动化补全函数与对应的命令关联起来,使得在输入该命令时,能够使用自动补全功能。
下面以脚本自动化补全代码为例,说明如何实现自动化补全功能。

默认情况下,Bash shell 自动补全功能是开启的。可以通过以下命令查看 Bash shell 自动补全功能的状态:

echo $BASH_VERSION
complete -p | grep -e 'm$'

其中,如果输出结果中包含 m 的信息,则说明 m 命令的自动补全功能已经被关联。

接着,我们可以在 ~/.bashrc 文件中添加以下代码,启用 m 命令的自动补全功能:

export PATH=$PATH:~/bin

# _m 是 Bash shell 补全功能的函数名称

function _m() {
    local cur=${COMP_WORDS[COMP_CWORD]}
    local prev=${COMP_WORDS[COMP_CWORD-1]}
    local opts="-h --help"
    local LIST=($(ls -d ${HOME}/* | awk -F/ '{print $(NF-1)}'))

    if [[ ${cur} == * ]]; then
        COMPREPLY=($(compgen -W "$(echo ${LIST[@]} | tr ' ' '\n' | grep ^${cur})" -- ${cur}))
    else
        COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
    fi
    return 0
}

# 将补全函数关联到 m 命令上

complete -F _m m

其中,脚本 m 存在于 ~/bin 目录下,因此需要将 ~/bin 加入到 $PATH 环境变量中。并且,在 ~/.bashrc 文件中定义了自动补全函数 _m,该函数根据输入的字符串,返回匹配的命令或参数列表。最后,在文件的结尾使用 complete 命令,将函数 _m 与命令 m 关联。

激活配置

执行以下命令以重新加载 Shell 配置文件:
source ~/.bashrc
或者,如果您使用的是 ~/.bash_profile,则使用以下命令:

source ~/.bash_profile
这些步骤应该能够解决这个问题,并使 box.sh 脚本正常工作。

使用方法

在命令行中输入 m 命令后,根据输入的字符串,自动显示匹配的命令或参数。特别地,当输入的字符串为空时,显示所有可以使用的参数(即 -h 和 --help)。

下图展示了在输入 m 命令后,使用自动化补全功能,自动显示了所有匹配的命令或参数列表:

hostname:~$ m <Tab>
Display all 294 possibilities? (y or n)
	file1 ...file249
hostname:~$ ls ~
	file1 ...file249

总结

脚本自动化补全可以帮助我们提高命令行操作系统的使用效率,避免因输入错误导致的问题。同时,它也提供了一种实现自动化补全的方法,为我们后续进行自动化操作奠定了基础。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值