complete
从sawgger.yaml配置文件,生成了bash的客户端,然后,发现了这个自动完成的东东,这个就是之前,很好奇,为啥有的命令,可以自动完成呢?按tab键后,就能输出可执行的命令列表。下面记录一下。
其实,shell对文件、文件夹本身就有支持,所有呢,我们也可以用这种方式,帮我们快捷的填充一些参数。(个人想得土办法)
从一个样例开始
首先,执行下面的代码,如
source apollo.sh.bash-completion
apollo.sh.bash-completion
# bash completion for apollo.sh -*- shell-script -*-
# Usage: ./apollo.sh TAB
autotab_list=("check" "build" "build_dist" "clean_dist" "build_min" "build_prof" "build_no_perception" \
"build_dbg" "build_opt" "build_dbg_gpu" "build_opt_gpu" "build_remote" "build_remote_cache" \
"build_remote_incar" "build_fe" "buildify" "build_py" "config" "doc" "lint" "test" "test_gpu" \
"release" "release_noproprietary" "coverage" "clean" "version" "usage")
function _autotab() {
local cur
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=( $(compgen -W "${autotab_list[*]}" -- ${cur}) )
return 0
}
complete -F _autotab apollo.sh
随便新建一个叫apollo.sh的可执行文件。然后执行的时候按tab键,确实有反应。
再进一步
从生成的shell命令的文档说明,发现,对于bash只需要将文件放到下面目录中,每次登录的时候,即可享受到自动提示的畅快。
sudo cp .bash-completion /etc/bash-completion.d/
确实,我发现了git的自动提示。