“简单的方法”;继承;Bash完成
我正在寻找一种简单的方法将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)。使函数
假设有一个程序
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
实现了这一点,不过感谢您的帮助性回答,它完美地回答了我的问题。