- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- シェルスクリプト/completeコマンドによる補完 へ行く。
- 1 (2010-11-09 (火) 16:06:48)
- 2 (2010-11-09 (火) 16:13:38)
completeコマンドによる補完
以下はsshコマンドを入力する際に.ssh/known_hostsからホスト名を抜き出して補完する。.bashrc等に設定する。
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コマンドによってコマンドを補完する。最後の引数sshが補完される対象のコマンド。
- completeコマンドは様々な引数を取れるが、-Fによってシェル関数を呼び出すことが出来る。
- シェル関数内で、COMPREPLY配列変数にキーワードを設定し、補完候補にする。
- 補完候補を作る場合、compgenコマンドを利用すると、絞り込み検索が出来る。
- 補完候補がfoo1 foo2 barとあった場合、fまで入力してTABを押すと、foo1とfoo2のみ候補になる。
- COMP_WORDSは入力中のコマンドライン文字列をホワイトスペースでsplitした配列変数。