轻松地"继承"Bash完成

dar*_*ine 3 bash completion

我正在寻找一种简单的方法来将Bash完成函数从程序"继承"到脚本中.

假设有一个程序foo提供自己的Bash完成,这样就$ foo sub<TAB>完成了$ foo subcommand.现在我想写一个脚本foo-extra,它接受相同的参数foo,在调用之前做一些额外的事情foo <arguments>.使foo-extra脚本foo完成函数的最简单方法是什么?

Ama*_*dan 5

foo完成使用某个函数(如果是标准函数,通常会定义/usr/share/bash-completion/completions/foo,也可能称为类似函数_foo).使函数成为完成函数的命令是:

complete -F _foo foo
Run Code Online (Sandbox Code Playgroud)

您可以将相同的函数添加到任意命令:

source /usr/share/bash-completion/completions/foo
complete -F _foo foo-extra
Run Code Online (Sandbox Code Playgroud)