在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
了。
裝好後,享受正常的命令行吧。