sqlplus命令历史解决方案
2024-08-24 10:16:26
在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还能提供一些补全功能(如文件路径补全、单词补全等),这里就不多说了。
最新文章
- PHP数组的基础知识
- JS学习之路(这个觉得写的很好,放在这里是方便查看)
- 搭建MySQL MHA高可用
- onSingleTapUp()和onSingleTapConfirmed()的区别
- 扫描线+堆 codevs 2995 楼房
- [译] EXTENDING JQUERY – 2.2 A simple plugin
- 【CodeForces 613A】Peter and Snow Blower
- form 表单 action 参数 接收不了
- 使用python实现最优化问题
- MySql5压缩包安装
- java 反射提取类信息, 动态代理 和过滤某些方法演示
- 理解Spring的Bean工厂
- web 导出 csv
- python select模块详解
- Ubuntu16.04下安装OpenCV3.2.0
- 实现简单的web框架
- Python爬虫-爬取百度贴吧帖子
- 【WIN32编程】利用汇编写cs1.6辅助
- es7 class装饰器
- 对于java自定义的工具类的提炼 注意事项