Jan*_*jka 2 bash autocomplete kubectl
假设您想节省编写所有kubectl命令的时间:kubectl describe pods以更短的方式:k d p。
所以解决方案是添加功能~/.bashrc:
k() {
cmd_kubectl="command kubectl"
case ${1} in
g)
shift
kubectl_get="${cmd_kubectl} get"
case ${1} in
p)
shift
${kubectl_get} pods "$@"
;;
d)
shift
${kubectl_get} deploy "$@"
;;
n)
shift
${kubectl_get} ns "$@"
;;
i)
shift
${kubectl_get} ing "$@"
;;
j)
shift
${kubectl_get} job "$@"
;;
*)
${kubectl_get} "$@"
;;
esac
;;
d)
shift
kubectl_desc="${cmd_kubectl} describe"
case ${1} in
p)
shift
${kubectl_desc} pods "$@"
;;
d)
shift
${kubectl_desc} deploy "$@"
;;
n)
shift
${kubectl_desc} ns "$@"
;;
i)
shift
${kubectl_desc} ing "$@"
;;
j)
shift
${kubectl_desc} job "$@"
;;
*)
${kubectl_desc} "$@"
;;
esac
;;
*)
${cmd_kubectl} "$@"
;;
esac
}
Run Code Online (Sandbox Code Playgroud)
但我想节省精力并进一步改进它,所以我的问题是:
k d p-> Tab-> k d p nginx(结果)
我试图想出以下参考文献,但可能我没有足够经验的 Linux 用户/开发人员来编写最终的解决方案。
提前致谢!
我也想让编写命令变得更容易kubectl,但我以稍微不同的方式解决了这个问题。
我将在下面描述此方法,因为我认为您可能会发现它很有用。
我将所有必要的文件保存在~/.bash_completion.d目录中,但您可以根据需要对其进行修改。
$ mkdir ~/.bash_completion.d
Run Code Online (Sandbox Code Playgroud)
首先,我启用了 kubectl 自动完成功能,如 Kubernetes文档中所述:
kubectl completion bash > ~/.bash_completion.d/kubectl
Run Code Online (Sandbox Code Playgroud)
然后我下载了complete-alias - automagical shell别名补全:
注意:更多信息可以在这里complete-alias找到。
$ curl https://raw.githubusercontent.com/cykerway/complete-alias/master/complete_alias > ~/.bash_completion.d/complete_alias
Run Code Online (Sandbox Code Playgroud)
接下来,我kubectl_aliases使用要使用的别名创建了文件:
$ cat ~/.bash_completion.d/kubectl_aliases
alias kgp='kubectl get pods'
complete -F _complete_alias kgp
alias kgd='kubectl get deploy'
complete -F _complete_alias kgd
alias kgn='kubectl get ns'
complete -F _complete_alias kgn
alias kgi='kubectl get ing'
complete -F _complete_alias kgi
alias kgj='kubectl get job'
complete -F _complete_alias kgj
alias kg='kubectl get'
complete -F _complete_alias kg
Run Code Online (Sandbox Code Playgroud)
最后,我们可以从目录中的文件执行命令~/.bash_completion.d并检查它是否按预期工作:
$ source ~/.bash_completion.d/kubectl
$ source ~/.bash_completion.d/complete_alias
$ source ~/.bash_completion.d/kubectl_aliases
Run Code Online (Sandbox Code Playgroud)
kgp输入并按两次后Tab,我们可以选择 Pod:
$ kgp
app-1 nginx webserver
$ kgp app-1
NAME READY STATUS RESTARTS AGE
app-1 1/1 Running 0 5m28s
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
847 次 |
| 最近记录: |