本文首先发布在
CSDN的文章编辑器实在太烂了,建议大家用Cmd Markdown。它不但支持markdown,还支持VIM模式。
betty
tool
command
ruby
betty 是一个用Ruby实现的非常简单,好玩的智能化命令行提示工具。主要解决的问题是将英文翻译成机器可以理解的unix命令。在它的官方文档中,我们可以找到详细的说明和解释。本文的主要目的在于根据betty为基础,定制我们自己的"英语命令"。
整个程序的入口是main.rb文件,它的主要功能是
lib/*.rb
装载所有可以执行的文件如果你安装成功了,你会发现在~/.bash_profile 或者其他的系统配置文件中,有一行类似于如下的代码
alias betty="xxx/betty/main.rb"
从以上的分析可以看出,betty 不负责具体的命令执行,只负责将我们通俗的语言(比如英语)转换成可以被系统执行的命令。
lib/*.rb
中的文件,负责
如果匹配,以JSON形式返回匹配的命令和说明
responses << {
:command => "grep --include=#{ pattern } -Rn #{ contains } #{ directory }",
:explanation => "Find files with extension that contains string."
}
我们以 betty find me all files that contain
california
为例讲解程序运行流程。
$executors
中寻找能匹配的命令,它通过调用executor
中的interpret
方法来实现的
目标:
想实现一个提示命令,比如输入 betty give me a help
就会在屏幕上显示所有的命令提示
根据以上得分析,我们发现实现自己的executor非常简单,基本的步骤如下
interpret(command)
command
,则返回 response
executor
注册到 $executors
中具体的代码请参考 https://github.com/chucai/betty
betty真是一个好玩的工具,实现自己的特定的命令也特别的简单。而且,这个项目还可以往更复杂的方向发展。比如类似于siri的语音提示,还有我们也可以定制自己的中文提示。由于这个项目才刚刚开始,所以还是有很多的不足之处,比如我们在处理特定的语音的时候,用的是正则表达式,还不够智能,逻辑也特别简单,如果想定制自己的需求,需要用户自己实现更多的细节。但整体来说,这是一个非常棒的工具!
智能化的命令行工具-betty,布布扣,bubuko.com
原文地址:http://blog.csdn.net/hexudong08/article/details/25538489