“简单的方法”;继承;Bash完成

“简单的方法”;继承;Bash完成,bash,completion,Bash,Completion,我正在寻找一种简单的方法将Bash完成函数从程序“继承”到脚本中 假设有一个程序foo提供了自己的Bash完成,这样$foo sub就完成了$foo子命令的编写。现在我想编写一个脚本foo extra,它采用与foo相同的参数,在调用foo之前做一些额外的工作。让foo extra脚本背驮foo的完成函数的最简单方法是什么?您的foo使用某个函数完成(如果是标准的,它通常在/usr/share/bash completion/completions/foo中定义,可能被称为\u foo)。使函数

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


假设有一个程序
foo
提供了自己的Bash完成,这样
$foo sub
就完成了
$foo子命令的编写。现在我想编写一个脚本
foo extra
,它采用与
foo
相同的参数,在调用
foo
之前做一些额外的工作。让
foo extra
脚本背驮
foo
的完成函数的最简单方法是什么?

您的
foo
使用某个函数完成(如果是标准的,它通常在
/usr/share/bash completion/completions/foo
中定义,可能被称为
\u foo
)。使函数成为完成函数的命令是:

complete -F _foo foo
您可以将相同的函数附加到任意命令:

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

我实际上需要一个ZSH的解决方案,但我要求使用Bash,因为它是一个更常见的shell。作为参考,我使用ZSH版本的
compdef
命令
compdef
compdef\u foo-foo-extra
实现了这一点,不过感谢您的帮助性回答,它完美地回答了我的问题。