
作成しようとしています。バッシュ自動完成私が経験している問題を示すために、このコードを書いて作業しました。
$ cat completion.sh
function _completion_command() {
compopt +o bashdefault +o default +o dirnames +o filenames +o nospace +o plusdirs
local cur=${COMP_WORDS[COMP_CWORD]}
local prev=${COMP_WORDS[COMP_CWORD-1]}
case "$prev" in
-u)
compopt -o nospace
COMPREPLY=($(compgen -S\= -W "parm" -- $cur))
return 0
;;
parm)
COMPREPLY=($(compgen -W "a b c" -- $cur))
return 0
;;
esac
COMPREPLY=($(compgen -W "-u" -- $cur))
return 0
}
complete -F _completion_command command
"parm"というパラメータに可能なパラメータを提供するために完了が必要でした。
. completion.sh
./command -u parm=
Tab Tab
a b c
しかし、私の場合、オートコンプリート機能は役に立ちませんでした。
答え1
prev
parm
cur
インクルード=
compgen -W "a b c" -- =
インクルード 何も出力しない
あなたはそれを使用することができます_get_comp_words_by_ref
~からバッシュ完了:
source bash-completion # /usr/share/bash-completion/bash_completion on Ubuntu with bash-complete installed
function _completion_command() {
local cur prev
_get_comp_words_by_ref -n = cur prev
case "$prev" in
-u)
case "$cur" in
parm=*)
COMPREPLY=($(compgen -W "a b c" -- ${cur#*=}))
return 0;
;;
*)
compopt -o nospace
COMPREPLY=($(compgen -S\= -W "parm" -- $cur))
return 0;
;;
esac
;;
esac
COMPREPLY=($(compgen -W "-u" -- $cur))
}
complete -F _completion_command command