本文于 125 天前发布,最后更新于 118 天前
一、问题概述
DM 数据库的 disql 中不能进行翻找命令,也不能使用简单的 backspace 删除,在编辑 SQL 的时候特别的不方便,本文讲述的 rlwrap 工具可以用来解决这个问题。
rlwrap 是 GNU readline 的封装程序,可对键盘输入进行编辑。并且维护着每个输入命令的历史记录。
二、安装过程
2.1 yum 安装
yum install rlwrap readline readline-devel
2.2 源码安装
下载 rlwrap 安装包,进行源码编译安装
下载地址:rlwrap-0.45.2.tar.gz
最新地址:rlwrap-0.46.1.tar.gz
将 rlwrap-0.45.2.tar.gz 文件上传到服务器当中进行源码安装即可
源码编译安装过程
[root@dm ~]# tar zxvf rlwrap-0.45.2.tar.gz rlwrap-0.45.2/ rlwrap-0.45.2/.gitignore rlwrap-0.45.2/AUTHORS rlwrap-0.45.2/BUGS rlwrap-0.45.2/COPYING rlwrap-0.45.2/ChangeLog rlwrap-0.45.2/INSTALL rlwrap-0.45.2/Makefile.am rlwrap-0.45.2/NEWS rlwrap-0.45.2/README.md rlwrap-0.45.2/completions/ rlwrap-0.45.2/completions/coqtop rlwrap-0.45.2/completions/testclient rlwrap-0.45.2/configure.ac rlwrap-0.45.2/doc/ rlwrap-0.45.2/doc/Makefile.am rlwrap-0.45.2/doc/rlwrap.man.in rlwrap-0.45.2/filters/ rlwrap-0.45.2/filters/Makefile.am rlwrap-0.45.2/filters/README rlwrap-0.45.2/filters/RlwrapFilter.pm rlwrap-0.45.2/filters/censor_passwords rlwrap-0.45.2/filters/censor_passwords.py rlwrap-0.45.2/filters/count_in_prompt rlwrap-0.45.2/filters/count_in_prompt.py rlwrap-0.45.2/filters/debug_null rlwrap-0.45.2/filters/dissect_prompt rlwrap-0.45.2/filters/edit_history rlwrap-0.45.2/filters/ftp_filter rlwrap-0.45.2/filters/ftp_filter.py rlwrap-0.45.2/filters/handle_hotkeys rlwrap-0.45.2/filters/handle_hotkeys.py rlwrap-0.45.2/filters/handle_sigwinch rlwrap-0.45.2/filters/history_format rlwrap-0.45.2/filters/listing rlwrap-0.45.2/filters/logger rlwrap-0.45.2/filters/logger.py rlwrap-0.45.2/filters/makefilter rlwrap-0.45.2/filters/null rlwrap-0.45.2/filters/null.py rlwrap-0.45.2/filters/outfilter rlwrap-0.45.2/filters/paint_prompt rlwrap-0.45.2/filters/paint_prompt.py rlwrap-0.45.2/filters/pipeline rlwrap-0.45.2/filters/pipeto rlwrap-0.45.2/filters/pipeto.py rlwrap-0.45.2/filters/rlwrapfilter.md rlwrap-0.45.2/filters/rlwrapfilter.py rlwrap-0.45.2/filters/scrub_prompt rlwrap-0.45.2/filters/simple_macro rlwrap-0.45.2/filters/template rlwrap-0.45.2/filters/unbackspace rlwrap-0.45.2/src/ rlwrap-0.45.2/src/Makefile.am rlwrap-0.45.2/src/completion.c rlwrap-0.45.2/src/completion.rb rlwrap-0.45.2/src/filter.c rlwrap-0.45.2/src/main.c rlwrap-0.45.2/src/malloc_debug.c rlwrap-0.45.2/src/malloc_debug.h rlwrap-0.45.2/src/multibyte.c rlwrap-0.45.2/src/pty.c rlwrap-0.45.2/src/ptytty.c rlwrap-0.45.2/src/readline.c rlwrap-0.45.2/src/redblack.h rlwrap-0.45.2/src/rlwrap.h rlwrap-0.45.2/src/signals.c rlwrap-0.45.2/src/string_utils.c rlwrap-0.45.2/src/term.c rlwrap-0.45.2/src/utils.c rlwrap-0.45.2/test/ rlwrap-0.45.2/test/testclient rlwrap-0.45.2/test/testit [root@dm ~]# cd rlwrap-0.45.2/ [root@dm rlwrap-0.45.2]# ll 总用量 100 -rw-rw-r-- 1 root root 982 6月 15 2021 AUTHORS -rw-rw-r-- 1 root root 2021 6月 15 2021 BUGS -rw-rw-r-- 1 root root 105 6月 15 2021 ChangeLog drwxrwxr-x 2 root root 38 6月 15 2021 completions -rw-rw-r-- 1 root root 18673 6月 15 2021 configure.ac -rw-rw-r-- 1 root root 17992 6月 15 2021 COPYING drwxrwxr-x 2 root root 46 6月 15 2021 doc drwxrwxr-x 2 root root 4096 6月 15 2021 filters -rw-rw-r-- 1 root root 4137 6月 15 2021 INSTALL -rw-rw-r-- 1 root root 2123 6月 15 2021 Makefile.am -rw-rw-r-- 1 root root 24793 6月 15 2021 NEWS -rw-rw-r-- 1 root root 3851 6月 15 2021 README.md drwxrwxr-x 2 root root 308 6月 15 2021 src drwxrwxr-x 2 root root 38 6月 15 2021 test
看到解压后缺少 configure 文件,则需要执行以下命令
[root@dm rlwrap-0.45.2]# yum -y install automake 上次元数据过期检查:0:26:20 前,执行于 2022年08月27日 星期六 10时20分54秒。 软件包 automake-1.16.2-1.ky10.noarch 已安装。 依赖关系解决。 无需任何处理。 完毕! [root@dm rlwrap-0.45.2]# aclocal [root@dm rlwrap-0.45.2]# autoconf [root@dm rlwrap-0.45.2]# autoheader [root@dm rlwrap-0.45.2]# autoreconf -ivf autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal --force autoreconf: configure.ac: tracing autoreconf: configure.ac: creating directory tools autoreconf: configure.ac: not using Libtool autoreconf: running: /usr/bin/autoconf --force autoreconf: running: /usr/bin/autoheader --force autoreconf: running: automake --add-missing --copy --force-missing configure.ac:92: installing 'tools/compile' configure.ac:32: installing 'tools/config.guess' configure.ac:32: installing 'tools/config.sub' configure.ac:34: installing 'tools/install-sh' configure.ac:34: installing 'tools/missing' parallel-tests: installing 'tools/test-driver' src/Makefile.am: installing 'tools/depcomp' autoreconf: Leaving directory `.' [root@dm rlwrap-0.45.2]# automake --add-missing [root@dm rlwrap-0.45.2]# ll 总用量 460 -rw-r--r-- 1 root root 42023 8月 27 10:47 aclocal.m4 -rw-rw-r-- 1 root root 982 6月 15 2021 AUTHORS drwxr-xr-x 2 root root 86 8月 27 10:47 autom4te.cache -rw-rw-r-- 1 root root 2021 6月 15 2021 BUGS -rw-rw-r-- 1 root root 105 6月 15 2021 ChangeLog drwxrwxr-x 2 root root 38 6月 15 2021 completions -rw-r--r-- 1 root root 9074 8月 27 10:47 config.h.in -rw-r--r-- 1 root root 9074 8月 27 10:47 config.h.in~ -rwxr-xr-x 1 root root 250227 8月 27 10:47 configure -rw-rw-r-- 1 root root 18673 6月 15 2021 configure.ac -rw-rw-r-- 1 root root 17992 6月 15 2021 COPYING drwxrwxr-x 2 root root 65 8月 27 10:47 doc drwxrwxr-x 2 root root 4096 8月 27 10:47 filters -rw-rw-r-- 1 root root 4137 6月 15 2021 INSTALL -rw-rw-r-- 1 root root 2123 6月 15 2021 Makefile.am -rw-r--r-- 1 root root 42420 8月 27 10:47 Makefile.in -rw-rw-r-- 1 root root 24793 6月 15 2021 NEWS -rw-rw-r-- 1 root root 3851 6月 15 2021 README.md drwxrwxr-x 2 root root 327 8月 27 10:47 src drwxrwxr-x 2 root root 38 6月 15 2021 test drwxr-xr-x 2 root root 126 8月 27 10:47 tools
看到已经有 configure 文件,即可执行三步走进行安装
[root@dm rlwrap-0.45.2]# ./configure [root@dm rlwrap-0.45.2]# make [root@dm rlwrap-0.45.2]# make install
完成安装。
其中,如果./configure 出现如下报错
configure: WARNING: No termcap nor curses library found checking for readline in -lreadline... no configure: error: You need the GNU readline library(ftp://ftp.gnu.org/gnu/readline/ ) to build this program!
因为缺省了 rpm 包,则需要执行
yum -y install readline*
注意:此步骤可在安装前执行,先检查是否安装 readline,
rpm -qa | grep readline
若未安装便可执行。
三、配置环境变量
切换到 dmdba 用户,修改环境变量,增加下面两行
alias disql="rlwrap disql" alias dmrman="rlwrap dmrman"
保存,退出,使环境变量生效
[dmdba@dm ~]$ source .bash_profile # 或者 [dmdba@dm ~]$ . .bash_profile
配置完成,再次打开 disql 便可以使用上下左右及 backspace 键。