利用rlwrap解决linux系统中第三方命令行出现的方向键等输入不正常

在linux中使用一些软件的命令行时,有时会遇到输入不正常的情况:方向键用不了,直接按方向键会出现一堆字符,退格也是,要按住ctrl才能正常退格,homeend键也不能正常用,等等。

比如在新装的系统中(无论是debian系还是rh系),自带的python2虽然正常,但如果自己编译装一个python3,进命令行一般就会出现这种情况。google一下可以知道,只需要装好readline-devel后再重新编译安装python3,就会正常。

这里涉及到linux的包readlinereadline-devel

关于包xxxx-devel的区别,摘一段网上的关于openssl的说明为例子:
Redhat在封装openssl的时候,把openssl分成了几个部分,执行码部分就是 openssl-1.0.0-27.el6.x86_64 这种包。openssl-devel-1.0.0-27.el6.x86_64 这个就是包含了头文件,头文件参考,某些库文件等跟开发相关的东西
因此可以把xx-devel理解为库文件。在debian系中好像也有的名称是xx-dev

readline是一个这样的东西:
The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. Both Emacs and vi editing modes are available. The Readline library includes additional functions to maintain a list of previously-entered command lines, to recall and perhaps reedit those lines, and perform csh-like history expansion on previous commands.

划重点:edit command lines as they are typed in……

当前官网最新版本是7.0,一般的软件源都是比较旧的,但够用了。要安装直接yum install readline

readline(-devel)是可以支持大部分linux软件的命令行输入的,实际上它支持的除了刚才说到的python,还包括bash本身,还有ftp等,但有些Low一点的软件,可能就支持不了。还有比如你参与开发的工程中,有些组件是别人编译好的可执行文件(比如公司自己修改过代码的sqlite),然后这个组件恰好就有这个问题,而平时使用不大可能自己去重新编译。

这种时候有一个更强大的软件,rlwrap,它是通过包装命令行的方式,无视了软件本身。

用法即rlrwap + 原本命令,比如: rlwrap sqlite3 xx.sqlite3, rlwrap python

github传送门:https://github.com/hanslub42/…

自己下载编译安装即可,首先当然,这个包依赖gcc,没安装的话在检查环境./configure时就会报错,yum install gcc安装gcc。

然后它还依赖上述的库文件readline-devel,缺少的话检查环境时最后会提示You need the GNU readline library(ftp://ftp.gnu.org/gnu/readline/ ) to build

yum install readline-devel安装好库文件,接下来可以正常编译安装rlwrap了。

装好后,享受正常的命令行吧。

    原文作者:nifhlheimr
    原文地址: https://segmentfault.com/a/1190000013867524
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞