我有一个名为
的ZSH完成脚本#compdef kubens
_arguments "1: :(- $(kubectl get namespaces -o=jsonpath='{range .items[*].metadata.name}{@}{"\n"}{end}'))"
这为kubens
命令提供了完成功能。但是,如果用户提供某个安装参数,该程序将与kns
名称链接,因此我尝试使用相同的#compdef
为这两个命令提供完成。
我如何实现这一目标?
答案 0 :(得分:2)
我们可以使用cmd=service
行的#compdef
表单:
#compdef kubens kns=kubens
虽然我们可以为#compdef
行使用多个名称,但当cmd=service
的行为与{{1}相同时,可以使用cmd
表单}}:
service
文件将被自动加载,并且在完成名称时将调用其中定义的函数,每个名称都是要完成其参数的命令的名称...
...
每个名称也可以是“#compdef name ... [ -{p|P} pattern ... [ -N name ... ] ]
”形式。完成命令 cmd 时,该功能的行为通常与完成命令(或特殊上下文) service 的操作相反。-
zshcompsys(1): Completion System, INITIALIZATION, Autoloaded files, #compdef