次の関数を使用できます。これらの関数は、sudo
オートコンプリートが完了リストを生成するのと同じ方法を使用します。
comp() {
local COMP_LINE="$*"
local COMP_WORDS=("$@")
local COMP_CWORD=${#COMP_WORDS[@]}
((COMP_CWORD--))
local COMP_POINT=${#COMP_LINE}
local COMP_WORDBREAKS='"'"'><=;|&(:"
# Don't really thing any real autocompletion script will rely on
# the following 2 vars, but on principle they could ~~~ LOL.
local COMP_TYPE=9
local COMP_KEY=9
_command_offset 0
echo ${COMPREPLY[@]}
}
comp git config ''
where _command_offset
はbash-completion(パッケージ)で定義されています。
注:関数は、対話型シェルで実行する必要があります(つまり、ファイル内にある場合は、ファイルを実行するだけでなくソースにする必要があります)。または、必要な完了規則/関数は定義されません。
PS。compgen -A
組み込みのアクションでのみ機能します。試したほうがよい(しかし機能しません)のはcompgen -F
(または実際にはcompgen -o bashdefault -o default -o nospace -F _git
)です。これが機能しない理由(およびcompgen / completeを含むbash組み込みコマンドのドキュメント)は、bash(1)で見つけることができます。