【发布时间】:2021-12-01 00:14:13
【问题描述】:
假设您想节省时间编写所有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
}
但是我想省点力气多改进一下,所以我的问题是:
如何在此功能上启用自动完成以允许填充,例如pod 的名称?
用法:
k d p -> Tab -> k d p nginx(结果)
我试图想出感谢以下参考资料,但可能我不够有经验的 Linux 用户/开发人员来编写最终解决方案。
- How to enable kubernetes commands autocomplete
- How to enable bash auto-completion for a function?
- https://askubuntu.com/questions/68175/how-to-create-script-with-auto-complete
提前致谢!
【问题讨论】:
-
一直在考虑做这样的事情,虽然我确信有办法改进(设计方面),但我仍然会说相当不错的尝试。不过,在这种情况下,自动完成似乎很难,不是吗?就像您在执行命令时需要该功能来了解/查询 pod 一样吗?也许使用 grep 至少可以帮助将其汇集起来,例如
k d p nginx实际上会转换为kubectl describe pods | grep "nginx"但也许您真的在寻找针对特定用例的自动完成功能。还是把它收藏起来! -
是的,我没想到这会很容易。 :) 我理解你的意思是在自动完成逻辑中使用 grep 吗?也许我完全出局了,无法想象解决方案。
标签: bash autocomplete kubectl