Tabキーでの補完
たとえば、ディレクトリ内のファイルが、
端末
$ls
a.aux a.dvi
a.log a.pdf
a.tex a.toc
compile_tex.sh
このような場合に、自作シェルスクリプトcompile_tex.shを実行することを考えます。
まず、./c[Space][Tab]と入力すると、
端末
$./compile_tex.sh
とうまく補完されて入力できます。
しかし、Texファイル「a.tex」を引数にするため、さらに[Space]a[Tab]]を入力すると、
端末
$./compile_tex.sh a.
と意図通りに補完できません。
これは、a.から始まるファイルが複数あるためです。
ある拡張子だけを補完したい!
では、自作シェルスクリプトcompile_texのTabキーによる補完候補を拡張子.texのものだけにするにはどうしたらいいのでしょうか。
たとえば、~/.bashrcに次の関数、
.bashrc
_compile_tex(){
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "$(ls *.tex)" -- $cur) )
}
complete -F _compile_tex compile_tex.sh
を追加し、変更を反映させます。
端末
$bash
このようにすることで、./compile_tex a[Tab]を入力した時に
端末
$./compile_tex.sh a.tex
と、拡張子「.tex」のものだけを補完することができました。
また、上記の関数_compile_tex()において、*.texの部分を変えることで、好みの補完ができるようになります。