2017-02-21 150 views
3

我每天都覺得自己做的......我可以在zsh中使用自動補全的kubectl嗎?

$ kubectl --context=foo get pods 
    < copy text manually > 
$ kubectl --context=foo logs dep1-12345678-10101 

我想通過匹配的資源循環與

$ kubectl --context=foo logs dep1<TAB> 

,但是這似乎並沒有做我的股票設置任何東西。有任何想法嗎?

OSX 10.12.3 kubectl v1.4.5 的zsh zsh的5.2(x86_64的-蘋果darwin16.0)

回答

7

兩個bashzsh支持當按下<TAB>這就完成了印刷命令的腳本。該功能被稱爲可編程模塊,你可以在這裏找到更多的細節:zsh completion

幸運的是,您不需要編寫自己的腳本--kubectl爲zsh> 5.2提供了它。試試運行這個命令:source <(kubectl completion zsh)

另一個選擇是使用此工具:https://github.com/mkokho/kubemrr (discalimer:我是作者)。它存在的原因是因爲標準完成腳本太慢 - 在kubernetes集羣回覆之前可能需要幾秒鐘纔會有所有的pod名稱。但kubemrr保留本地名稱,所以響應幾乎立即返回。

+1

在未來的炮彈自動加載,你可以做'回聲 「源<(kubectl完成的zsh)」 >>〜/ .zshrc' – Nikhita

-1

我把這個函數添加到我的$ HOME/.zshrc中。

它將kubectl的延遲加載功能齊全

kubectl() { if [[ -z $KUBECTL_COMPLETE ]] then source <($commands[kubectl] completion zsh) KUBECTL_COMPLETE=1 fi $commands[kubectl] $* }

相關問題