"inherit" Bash 完成的简单方法

Easy way to "inherit" Bash completion

我正在寻找一种简单的方法来 "inherit" Bash 从程序到脚本的完成函数。

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

您的 foo 使用某个函数完成(如果是标准的,它通常会在 /usr/share/bash-completion/completions/foo 中定义,并且可能会调用类似 _foo 的东西)。使函数成为完成函数的命令是:

complete -F _foo foo

您可以将相同的功能添加到任意命令:

source /usr/share/bash-completion/completions/foo
complete -F _foo foo-extra