2009-11-19

如何给Mysql命令行客户端里的命令添加别名(如何在Mysql内使用ls/ll)

我有个非常不好的习惯,每次进入到Mysql命令行客户端的时候,都会下意识ll一下。这个毛病非常不好,因为这命令人家根本不支持,而且人家还等着你给个分号,你不给就继续等,真是烦人。其实Mysql也真是的,有些命令需要分号,有些不需要,烦人。

于是我今天在我的Twitter上面抱怨这一点
每次进入mysql>提示符,我总是先ll一下,每次都是,我决心以后研究下mysql console的源代码,让ll=show databases;,如果use了数据库,就变成show tables;
很多人说他们也是,于是我就想干脆Hack一下Mysql,让他支持ll/ls吧。在Hack之前,我想搜索一下有没有正规方式给Mysql命令行命令加个别名(要是有这正规方法,自己不用,反而去改代码也太丢人了),于是我在Google搜索“mysql alias ls”,结果没找到正规方法,倒是没想到很快就找到了这篇文章《Making mysql a bit more shell-like》。

这篇文章告诉我,原来很早以前(文章发布于2004年)就有人这么想,而且这么做了;而且这么做非常的简单,只需要修改mysql.cc文件,加几行代码,然后重新编译安装就是了。

不过注意,这篇文章太老了,代码已经过时,在现在的mysql.cc下已经编译不过去了,不要直接用patch,看懂patch自己改还是很容易的。另外你还需要把buffer->set("SHOW DATABASES", 14);这类的地方改成buffer->append("SHOW DATABASES;");就可以了(注意databases后面的分号,有了这个ll和ls就不用加分号了,很爽啊)。

当然,如果你连自己编译和安装mysql都不会,你还是先学了那个,然后再来玩吧。

我加了ll/ls,这两个命令一个意思,在没有选择数据库的时候,作用就是SHOW DATABASES,选择数据库以后,做用就是SHOW TABLES。而一旦你选择了数据库,你就无法取消选择,最多只能选择其他的数据库,为了在这种状态下,可以SHOW DATABASES,我又加了一个命令ld,可以在任何情况下,SHOW DATABASES。

做了这些修改,重新编译安装以后,用起来感觉真好用,再也不用觉得上来就ll是个错误了,我真是觉得开源太好了,哈哈。



2009-11-17

欢迎大家参加Beta沙龙第九期《推荐系统在大型网站中的应用和实做》

时间:11月22日 星期日 下午2点半
地点:奇遇花园咖啡馆(http://storygarden.me/cafe/map
主题:推荐系统在大型网站中的应用和实做
主讲:王洪涛(当当) 付超群(前某网站音乐事业部)
简介:“豆瓣猜你喜欢什么”,亚马逊的书籍推荐等等都是网站中的推荐系统,推荐系统越来越成为一个网站不可或缺的部分。它可以帮助用户找到自己可能喜欢的东西,可以帮助网站提高销售收入。有人说推荐系统就是搜索引擎之后的Next big thing。beta沙龙本期请到了resys的两位成员王洪涛和付超群,两位都在大型网站上进行过推荐系统的实做,希望他们的经验,可以帮助我们了解什么是推荐系统,网站为什么需要推荐系统,以及如何构建一个推荐系统。

无需报名,无需费用,点单随意。