带有别名的 Kubernetes kubectl bash 完成

Ija*_*han 21 kubernetes

我正在使用kubectl with bash completion,但我更喜欢使用较短的别名,kubectl例如ks,我需要进行哪些更改才能使用别名完成 bash 完成工作ks

end*_*ine 34

来自官方文档

# after installing bash completion

alias k=kubectl
complete -F __start_kubectl k
Run Code Online (Sandbox Code Playgroud)

https://kubernetes.io/docs/reference/kubectl/cheatsheet/#bash

  • 这一解决方案比被认为“正确”的解决方案要简单得多。 (4认同)

Ric*_*ico 18

来自文档的更新:

如果您有 kubectl 的别名,您可以扩展 shell 补全以使用该别名:

echo 'alias ks=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc
Run Code Online (Sandbox Code Playgroud)

你基本上可以这样做:

$ echo "source <(kubectl completion bash | sed 's|__start_kubectl kubectl|__start_kubectl ks|g') >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

过时

此处描述的内容略有不同。

实质上,您在kubectl completion bash输出中替换了以下内容:

if [[ $(type -t compopt) = "builtin" ]]; then
    complete -o default -F __start_kubectl kubectl
else
    complete -o default -o nospace -F __start_kubectl kubectl
fi
Run Code Online (Sandbox Code Playgroud)

有了这个:

if [[ $(type -t compopt) = "builtin" ]]; then
    complete -o default -F __start_kubectl ks
else
    complete -o default -o nospace -F __start_kubectl ks
fi
Run Code Online (Sandbox Code Playgroud)


Pra*_*ati 7

我在我的 .bashrc 中有这个来获取别名和自动完成。

源 <(kubectl 完成 bash | sed s/kubectl/k/g)