まず、Linuxのコマンド一覧は以下で取得できるらしいです。これはMacでも使えます。 ただWindowsはコマンドを一覧表示できないようなので、cygwinの利用を想定するしかないかも知れません。
compgen -ac
このリストを利用したコマンド補完は以下で良さそうです。
require 'readline' # gem install rb-readline
commands = `bash -ic "compgen -ac"`.split("\n")
Readline.completion_proc = proc {|s|
last_command = Readline.line_buffer.split(/\s*[|&]\s*/)[-1]
if last_command =~ /^.*\s+/
Dir.glob('*').grep( /^#{Regexp.escape(s)}/ )
else
commands.grep( /^#{Regexp.escape(s)}/ )
end
}
Readline.readline("Execute: ")
これでbashの補完とまったく同じ補完が実現できるようになりました。
以前作成したスクリプトも更新しておきました。
0 件のコメント:
コメントを投稿