在Linux上使用sqlplus比较痛苦,因为不能使用上下方向键来调出命令历史,也不能使用左右键移动光标对输入的命令进行修改,甚至连Backspace键都不能用(不过我发现大部分Backspace不能使用的地方都可以用Ctrl+Backspace进行退格删除),只能Ctrl+u清除已经输入的命令。这简直是对我们命令熟练程度和击键准确度的极大挑战。

 
有没有办法可以让sqlplus像shell一样具有便利的命令历史功能呢?答案是“万能”的rlwrap!既然号称“万能”,就不仅仅是可以解决sqlplus的问题,凡是像sqlplus一样没有命令历史的(比如tclsh)都可以用rlwrap来解决。
 
rlwrap是一个wrapper,它接收我们输入的命令并交给我们指定的程序去执行,同时使用GNU readline库提供命令行编辑功能并且记录命令历史。
 
这里下载rlwrap的源码,编译安装并且将rlwrap加入PATH变量。如前所述rlwrap依赖readline,因此编译前请确保系统中readline库及其开发包。有些发行版的软件仓库中包含了rlwrap,那就可以直接使用系统的包管理器安装了。
 
安装好rlwrap以后,使用rlwrap调用sqlplus就可以享用熟悉的命令行编辑和命令历史功能了:
rlwrap sqlplus
如果觉得每次都要加上rlwrap很不方便,在.bashrc中定义shell alias别名就好了:
alias sqlplus="rlwrap sqlplus"
实际上rlwrap将我们输入的命令都保存到了HOME目录中的一个隐藏文件中,以此提供命令历史。这个文件的命名与我们要执行的程序相关,比如使用rlwrap包裹sqlplus,则命令历史文件是.sqlplus_history。
 
另外,通过指定命令行选项,rlwrap还能提供一些补全功能(如文件路径补全、单词补全等),这里就不多说了。
 

最新文章

  1. PHP数组的基础知识
  2. JS学习之路(这个觉得写的很好,放在这里是方便查看)
  3. 搭建MySQL MHA高可用
  4. onSingleTapUp()和onSingleTapConfirmed()的区别
  5. 扫描线+堆 codevs 2995 楼房
  6. [译] EXTENDING JQUERY – 2.2 A simple plugin
  7. 【CodeForces 613A】Peter and Snow Blower
  8. form 表单 action 参数 接收不了
  9. 使用python实现最优化问题
  10. MySql5压缩包安装
  11. java 反射提取类信息, 动态代理 和过滤某些方法演示
  12. 理解Spring的Bean工厂
  13. web 导出 csv
  14. python select模块详解
  15. Ubuntu16.04下安装OpenCV3.2.0
  16. 实现简单的web框架
  17. Python爬虫-爬取百度贴吧帖子
  18. 【WIN32编程】利用汇编写cs1.6辅助
  19. es7 class装饰器
  20. 对于java自定义的工具类的提炼 注意事项

热门文章

  1. iOS imageio nsurlsession 渐进式图片下载
  2. 使用Node.js实现简易MVC框架
  3. swift UITextView内容距离边框边距设置
  4. 浅谈JavaScript和DOM中的类数组对象
  5. web添加第三方应用,前端解决跨域问题的8种方案
  6. .Net Webapi Swagger增加登录功能
  7. 剑指OFFER——正则表达式匹配
  8. JS中的变量和输入输出
  9. Java企业微信开发_07_素材管理之上传本地临时素材文件
  10. JSP是什么?