私のbashrcで。次のようにコマンドを完全にバッシュしようとしてscp
います
function _scp_complete
{
COMPREPLY=""
COMPREPLY+=( $(cat ~/.ssh_complete ) )
COMPREPLY+=( $( find . ! -name . -prune -type f ) )
}
complete -F _scp_complete scp
アイデアは、押すscp [tab]
と、現在のディレクトリ内のすべてのファイルと、テキスト ファイルにリストされている単語が表示されるということです~/.ssh_complete
。このファイルに次のエントリが含まれているとします。
アレックス@192.0.0.1 アレックス@192.0.0.2
望ましい動作は次のとおりですscp alex@[TAB]
。入力してタブ補完すると、scp alex@192.0.0 へのコマンドが「完了」します。alex@ で始まる可能な引数は 2 つしかないため (現在の作業ディレクトリに同様の名前のファイルがないと仮定します)。
>scp alex@[TAB]
alex@192.0.0.1 alex@192.0.0.1
>scp alex@192.0.0.
説明した実装で得られる動作は次のとおりです。入力scp alex@[TAB]
すると、タブ補完は何も完了しませんが、コマンドの下にすべての可能な引数をリストします。
>scp alex@[TAB]
alex@192.0.0.1 alex@192.0.0.1 file1 Music Pictures ./.emacs <ALL files in the current directory>
>scp alex@
関数を修正して目的の動作を得るにはどうすればよいですか?