* completeコマンドによる補完 [#d372954f]
以下は.ssh/known_hostsからホスト名を抜き出して補完する。
function ssh_complete() {
local curw
COMPREPLY=()
curw=${COMP_WORDS[COMP_CWORD]}
ORIG=$IFS
IFS="
"
COMPREPLY=($(compgen -W '$(cut -f 1 -d " " $HOME/.ssh/known_hosts)' -- $curw))
IFS=$ORIG
return 0
}
complete -F ssh_complete ssh
- completeコマンドによって、コマンドを補完する。
- completeコマンドは様々な引数を取れるが、-Fによってシェル関数を呼び出すことが出来る。
- シェル関数内で、COMPREPLY配列変数にキーワードを設定し、補完候補にする。
- 補完候補を作る場合、compgenコマンドを利用すると、絞り込み検索が出来る。
-- 補完候補がfoo1 foo2 barとあった場合、fまで入力してTABを押すと、foo1とfoo2のみ候補になる。