利用rlwrap解決linux系統中第三方命令行出現的方向鍵等輸入不正常

在linux中使用一些軟件的命令行時,有時會遇到輸入不正常的狀況:方向鍵用不了,直接按方向鍵會出現一堆字符,退格也是,要按住ctrl才能正常退格,homeend鍵也不能正經常使用,等等。python

好比在新裝的系統中(不管是debian系仍是rh系),自帶的python2雖然正常,但若是本身編譯裝一個python3,進命令行通常就會出現這種狀況。google一下能夠知道,只須要裝好readline-devel後再從新編譯安裝python3,就會正常。linux

這裏涉及到linux的包readlinereadline-develgit

關於包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-devgithub

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 readlineapp

readline(-devel)是能夠支持大部分linux軟件的命令行輸入的,實際上它支持的除了剛纔說到的python,還包括bash自己,還有ftp等,但有些Low一點的軟件,可能就支持不了。還有好比你參與開發的工程中,有些組件是別人編譯好的可執行文件(好比公司本身修改過代碼的sqlite),而後這個組件剛好就有這個問題,而平時使用不大可能本身去從新編譯。ide

這種時候有一個更強大的軟件,rlwrap,它是經過包裝命令行的方式,無視了軟件自己。ui

用法即rlrwap + 本來命令,好比: rlwrap sqlite3 xx.sqlite3, rlwrap pythongoogle

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了。

裝好後,享受正常的命令行吧。

相關文章
相關標籤/搜索