PS:近來因工作需要業餘在學習oracle,發現通過SecureCRT或putty等SSH用戶端遠程登入Linux下oracle的sqplus時,輸錯字元後按Backspace鍵或Del鍵刪除時,會出現^H或其他亂七八糟的的字元,感覺非常彆扭不習慣,雖然可以通過Ctrl+Backspace按鍵組合實現刪除功能,但是嚴重影響使用效率。google了一番,終於完美解決此問題。總結記錄如下,本文是此問題最完整的總結:
亂七八糟的字元如圖:
一、SecureCRT終端裡的解決方案:(不完美)
在SecureCRT終端裡,如果要在sqlplus下使用Backspace來刪除字元,有兩種臨時方法。
第一種是使用stty命令重新定義^H,可以在使用sqlplus之前執行stty erase ^H,也可以把這一句放到oracle使用者的.bash_profile檔案裡。
stty命令簡介:
Unix或者Linux中有個stty命令,它的作用是列印或更改terminal(終端)的設定。
常用參數:
-a --all 用人類可讀表格,列印出所有現有設定
-g --save 用stty可讀表格,列印出所有現有設定
--help 協助
--version 版本
查看當前stty現有設定,如圖:
第二種是使用SecureCRT的設定,在會話屬性的Terminal->Emulation->Mapped Keys中,選中Backspace sends delete或Delete sends backspace中的其中一個,並確保另一個不被選中。
另一個問題是bash shell下的sqlplus中使用上下箭頭無法顯示上下命令,而只是顯示^[[A,這個問題可以安裝rlwrap這個工具解決!
二、利用rlwrap工具解決方案:(完美)
1、安裝rlwrap和readline庫
CentOS下可以用EPEL的yum源直接安裝,步驟如下:
(1)RHEL/CentOS/SL Linux 6.x 下安裝 EPEL6 yum源:
32位系統選擇:
# rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
64位系統選擇:
# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
匯入key:
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
預設會在/etc/yum.repos.d/下建立epel.repo和epel-testing.repo兩個設定檔。
(2)安裝rlwrap和readline:
# yum install rlwrap readline readline-devel
其他Linux發行版如果源裡沒有rlwrap和readline的(如SUSE企業版預設沒有這兩個包),要分別下載這兩個源碼包編譯安裝一下。
# wget ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz# tar zxvf readline-6.2.tar.gz# cd readline-6.2/# ./configure# make# make install# wget http://utopia.knoware.nl/~hlub/rlwrap/rlwrap-0.37.tar.gz# tar zxvf rlwrap-0.37.tar.gz# cd rlwrap-0.37/# ./configure# make# make install
(3)設定sqlplus的系統別名:
# vim /home/oracle/.bash_profile
在頭部或尾部添加:
alias sqlplus='rlwrap sqlplus'alias rman='rlwrap rman'
退出oracle使用者再重新登入就ok。現在sqlplus用起來就很爽很習慣了!