
一連のディレクトリのタブの完成を要求するbashエイリアスを作成できますか?
ソース管理の下に多くのプロジェクトがあり、各プロジェクトのデフォルトパスは次のとおりです。~/projs/<projname>/trunk
これで、簡単に切り替えることができるようにBashエイリアスを作成しました。
go-to <projname>
cd ~/projs/<projname>/trunk
ファイルシステムのどこにいても試してみましょう。
私が書くときにどのプロジェクト名が利用可能であるかを確認できるように、タブ補完<projname>
プロンプトを表示することは可能ですか?go-to[space][Tab]
(最新のUbuntuディストリビューションです)
答え1
これはエイリアスでは動作しません。プログラム可能な完成(詳しくは man bash をご覧ください。)。完成した最小例はbash
次のとおりです。
_go-to() {
COMPREPLY=( $(compgen -W "~/projs/proj1/trunk ~/projs/proj2/trunk" -- "${COMP_WORDS[COMP_CWORD]}") );
}
complete -F _go-to go-to
したがって、まず関数を作成し、_go-to
それをコマンドにバインドしますgo-to
。
go-to <tab>
これでこれが完了し、go-to /home/user/projs/proj
別の<tab>
提案のリストが作成されます。
/home/user/projs/proj1/trunk /home/user/projs/proj2/trunk