在linux中使用一些软件的命令行时,有时会遇到输入不正常的状况:方向键用不了,直接按方向键会出现一堆字符,退格也是,要按住ctrl
才能正常退格,home
和end
键也不能正经常使用,等等。python
好比在新装的系统中(不管是debian
系仍是rh
系),自带的python2
虽然正常,但若是本身编译装一个python3
,进命令行通常就会出现这种状况。google一下能够知道,只须要装好readline-devel
后再从新编译安装python3
,就会正常。linux
这里涉及到linux的包readline
和readline-devel
。git
关于包xx
和xx-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
。github
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.
sql
划重点:edit command lines as they are typed in
……bash
当前官网最新版本是7.0,通常的软件源都是比较旧的,但够用了。要安装直接yum install readline
app
readline(-devel)
是能够支持大部分linux软件的命令行输入的,实际上它支持的除了刚才说到的python
,还包括bash
自己,还有ftp
等,但有些Low一点的软件,可能就支持不了。还有好比你参与开发的工程中,有些组件是别人编译好的可执行文件(好比公司本身修改过代码的sqlite),而后这个组件刚好就有这个问题,而平时使用不大可能本身去从新编译。ide
这种时候有一个更强大的软件,rlwrap
,它是经过包装命令行的方式,无视了软件自己。ui
用法即rlrwap + 本来命令
,好比: rlwrap sqlite3 xx.sqlite3
, rlwrap python
google
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
了。
装好后,享受正常的命令行吧。