1.给自定义脚本创建软连接
ln -s myscript.sh /usr/bin/myscript2.创建tab补全脚本
vim /usr/share/bash-completion/completions/myscript#!/bin/bash
# 定义所有服务列表
services=("demo1" "demo2" "demo3")
# 添加 "all" 选项到服务列表中,仅限于 start, stop, restart, status 命令
all_services=("${services[@]}" "all")
_myscript_sh()
{
local cur prev cmd
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
cmd="${COMP_WORDS[1]}"
case "$cmd" in
start|stop|restart|status)
# 对于 start, stop, restart, status 命令,使用包含 "all" 的服务列表
COMPREPLY=( $(compgen -W "${all_services[*]}" -- ${cur}) )
;;
log)
# 对于 log 命令,使用原始的服务列表
COMPREPLY=( $(compgen -W "${services[*]}" -- ${cur}) )
;;
*)
# 如果没有识别到命令,则提供 start, stop, restart, status, log 的补全
COMPREPLY=( $(compgen -W "start stop restart status log" -- ${cur}) )
;;
esac
}
complete -F _myscript_sh myscript
# 此处_myscript_sh是当前脚本函数名, myscript为自定义脚本名3.增加执行权限,立即生效
chmod +x /usr/share/bash-completion/completions/myscript-completion.bash
source /usr/share/bash-completion/completions/myscript-completion.bash注意:自定义脚本名称必须和命令名称保持一致,否则自定义脚本无法加载成功。
评论