[英]Enable tab auto completion for kubectl in bash function
給定 .bashrc 中的 bash 函數,例如
kgp () {
kubectl get po -n $1 $2
}
是否可以讓 kubectl 自動完成 k8s 資源(例如命名空間/pod)的工作? 例如,如果我使用
kubectl get po -n nsprefix podprefix
我可以自動完成前綴。 而當我調用位置參數時
kgp nsprefix podprefix
我必須輸入整個資源名稱。
是的,那是因為 bash-completion 只理解已知命令,而不是別名或您編寫的新函數。 您將通過alias whee=/bin/ls
的一個簡單示例遇到同樣的事情,然后whee <TAB>
將什么也不做,因為它不會“遞歸”到該別名中,並且肯定不會嘗試調用您的函數為了找出它可能接受的論點。 這可能是災難性的
歡迎您為自定義kgp
創建一個新的complete
處理程序,但這是獲得所需行為的唯一方法
_kgp_completer() {
local cur prev words cword
COMPREPLY=()
_get_comp_words_by_ref -n : cur prev words cword
if [[ $cword == 1 ]] && [[ -z "$cur" ]]; then
COMPREPLY=( $(echo ns1 ns2 ns3) )
elif [[ $cword == 2 ]] && [[ -z "$cur" ]]; then
COMPREPLY=( $(echo pod1 pod2 pod3) )
fi
echo "DEBUG: cur=$cur prev=$prev words=$words cword=$cword COMPREPLY=${COMPREPLY[@]}" >&2
}
complete -F _kgp_completer kgp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.