我有个非常不好的习惯,每次进入到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是个错误了,我真是觉得开源太好了,哈哈。


请不要吝惜您的评论,每一条评论,都是我在漫漫长夜前行的力量
5 条评论:
哈哈,成了linux命令操作了,不错的做法。我有时候也总是到了mysql命令行中使用linux命令。
赞一个
10:26 上午
我也总是在已进入mysql的时候习惯性的输入ll来查看一些东西……hack下
10:40 上午
原来已经实现了-,-
11:46 下午
能不能做一个虚拟设备,然后在 shell 里 ls /dev/db 的时候执行 SHOW DATABASES 呢~
11:54 下午
E.T你这个想法应该没问题,估计也不难实现,以后有功夫可以研究下
10:07 上午
发表评论
<< 主页