智能化的命令行工具-betty

原创 2014年05月11日 11:38:51

本文首先发布在


CSDN的文章编辑器实在太烂了,建议大家用Cmd Markdown。它不但支持markdown,还支持VIM模式。


智能化的命令行工具-betty

betty tool command ruby


betty 是一个用Ruby实现的非常简单,好玩的智能化命令行提示工具。主要解决的问题是将英文翻译成机器可以理解的unix命令。在它的官方文档中,我们可以找到详细的说明和解释。本文的主要目的在于根据betty为基础,定制我们自己的"英语命令"。

基本原理

整个程序的入口是main.rb文件,它的主要功能是

  1. 接受命令行参数
  2. lib/*.rb装载所有可以执行的文件
  3. 匹配寻找可以执行的命令
  4. 执行命令

如果你安装成功了,你会发现在~/.bash_profile 或者其他的系统配置文件中,有一行类似于如下的代码 
alias betty="xxx/betty/main.rb"

从以上的分析可以看出,betty 不负责具体的命令执行,只负责将我们通俗的语言(比如英语)转换成可以被系统执行的命令。

lib/*.rb中的文件,负责

  • 判断命令是否匹配(使用正则match)
  • 如果匹配,以JSON形式返回匹配的命令和说明

    1. responses << {
    2. :command => "grep --include=#{ pattern } -Rn #{ contains } #{ directory }",
    3. :explanation => "Find files with extension that contains string."
    4. }

    我们以 betty find me all files that contain california 为例讲解程序运行流程。

  • betty 命令映射到了 main.rb 文件中, 触发了main方法
  • main 方法调用 interpret 方法
  • interpret 方法的主要职责是在 $executors 中寻找能匹配的命令,它通过调用executor中的interpret方法来实现的
  • executor就是在lib中定义的module

定制自己的executor

目标: 
想实现一个提示命令,比如输入 betty give me a help 就会在屏幕上显示所有的命令提示

根据以上得分析,我们发现实现自己的executor非常简单,基本的步骤如下

  1. 在lib中定义一个新的module
  2. 定义一个类方法 interpret(command)
  3. 如果匹配command,则返回 response
  4. 将 executor 注册到 $executors 中

具体的代码请参考 https://github.com/chucai/betty

总结

betty真是一个好玩的工具,实现自己的特定的命令也特别的简单。而且,这个项目还可以往更复杂的方向发展。比如类似于siri的语音提示,还有我们也可以定制自己的中文提示。由于这个项目才刚刚开始,所以还是有很多的不足之处,比如我们在处理特定的语音的时候,用的是正则表达式,还不够智能,逻辑也特别简单,如果想定制自己的需求,需要用户自己实现更多的细节。但整体来说,这是一个非常棒的工具!


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

md5 windows命令行工具

blat 邮件命令行工具

  • 2017-08-18 15:02
  • 327KB
  • 下载

标签换行智能化——预处理工具来帮忙

有了标签换行预处理工具,再也不用苦苦思索“到底设置多少个字符换行呢?貌似怎么设置换行的字符数都不合适”。 标签换行预处理工具会找出完美的换行方案!

SecureCRT命令行工具

  • 2016-07-15 16:34
  • 30.39MB
  • 下载

Linux命令行性能监测工具

1.TOP——Linux进程监控 Linux的top命令是一个性能监视程序,许多Linux系统管理员经常使用它来监测系统性能,top命令会把所有正在运行的实时进程用列表的形式显示出来并且会定时更新。...

ffmpeg / avconv是通用的视频/音频编解码命令行工具

转载自:http://blog.openlg.net/index.php/archives/767 ffmpeg / avconv是通用的视频/音频编解码命令行工具。 通用是既指他们可以处理各...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)