2017-02-21 4 views
3

я ежедневно считаю себя делать ...Могу ли я использовать автозаполнение для kubectl в zsh?

$ 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 ЗШ ЗШ 5,2 (x86_64-яблочно-darwin16.0)

ответ

7

bash Как и zsh поддерживает сценарии, завершает отпечатанные команду при нажатии <TAB>. Эта функция называется Программируемая копия, и вы можете найти более подробную информацию об этом здесь: zsh completion.

К счастью, вам не нужно писать собственный сценарий - kubectl предоставляет его для zsh> 5.2. Попробуйте выполнить эту команду: source <(kubectl completion zsh).

Другой вариант заключается в использовании этого инструмента: https://github.com/mkokho/kubemrr (discalimer: Я автор). Причина, по которой он существует, заключается в том, что стандартный скрипт завершения слишком медленный - может потребоваться несколько секунд, прежде чем ответы кубернетов будут отвечать всем именам подкадров. Но kubemrr сохраняет имена локально, поэтому ответ возвращается почти сразу.

+1

Для автоматической загрузки будущих оболочек, вы можете сделать 'Эхо "источник <(kubectl завершающего ЗШУ)" >> ~/.zshrc' – Nikhita

-1

Я добавляю эту функцию в мой $ HOME/.zshrc.

Это ленивых нагрузки полной функция kubectl

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

Смежные вопросы