ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 解决backspace和上下键使用出现乱码

解决backspace和上下键使用出现乱码

原创 Linux操作系统 作者:hdoracle 时间:2012-04-18 18:48:55 0 删除 编辑
Linux中oracle学习总结——解决backspace和上下键使用出现乱码

 Vi编辑器修改文件.bash_profile可解决backspace出现乱码问题

    使用SecureCRT或是pietty_ch连接到一台安装有Oracle DB 10gRHEL4.2的机器,linux使用shell是默认的bash

bash提示符下,使用Del键或者Backspace键都能删除光标左右的字符,但是一旦进入sqlplus之后,只能使用Del键来删除光标左侧的字符,使用Backspace键则显示^H,使用ctrl+H也能删除字符。如果要在sqlplus仅仅使用Backspace来删除字符,那么有两种方法

第一种是使用stty命令重新定义^H,可以在使用sqlplus之前执行stty erase ^H,也可以把这一句放到Linux用户的.bash_profile文件中。

第二种是使用SecureCRT的设置,在会话属性的Terminal->Emulation->Mapped Keys中,选中Backspace sends deleteDelete sends backspace中的任何一个,并确保另一个不被选中。

此二种方法即可解决backspace出现乱码问题。

    另一个问题是bash下的sqlplus中使用上箭头无法显示上一个和下一个命令,而只是显示^[[A为便于复制可以在SecureCRT中进行设置,在Global Options->TerminalMouse部分,选中Copy on select,并设置Paste on middle(right) button。但是这样依然只能显示最近的一条命令,而不能显示更多的历史命令。在Linux下如果需要实现上下翻阅命令的话需要安装其他的工具,rlwrap就是一个。

 

rlwrap 的安装使用[SQL中上下键使用]

    今天在论坛上看到了rlwrap工具,感觉很好,我把总结发一下
    Windows操作系统上,当在DOS命令窗口中运行SQL*Plus的时候,可以使用向上,向下键来跳回之前已经执行过的SQL语句.你可以根据需要修改他们,然后按Enter键重新提交执行然而,当在Linux Shell中运行SQL*Plus的时候,并不提供浏览历史命令行的功能为了在Linux中达到同样的目的,你可以安装rlwrap,这个程式本身是个Shell,可以运行任何你提供给它的命令包括参数,并添加命令历史浏览功能.The rlwrap program is under the GPL license.

 

 

:安装readline


OS的安装光盘里提供了readline包(在安装包的centos/rpms目录下,有两个以readline开头的包).
[root@oracle11g ~]# rpm -Uvh readline*
error: Failed dependencies: libtermcap-devel is needed by readline-devel-5.1-1.1.i386.rpm
[root@oracle11g ~]# rpm -Uvh libtermcap-devel-2.0.8-46.1.i386.rpm
[root@oracle11g ~]# rpm -Uvh readline*
package readline-5.1-1.1 is already installed
[root@oracle11g ~]# rpm -Uvh readline-devel-5.1-1.1.i386.rpm

 

 

:安装rlwrap


Downloadhttp://utopia.knoware.nl/~hlub/uck/rlwrap/

[root@oracle11g ~]# tar -zxvf rlwrap-0.30.tar.gz
[root@oracle11g ~]# cd rlwrap-0.30
[root@oracle11g rlwrap-0.30]# ./configure
[root@oracle11g rlwrap-0.30]# make
[root@oracle11g rlwrap-0.30]# make install
[root@oracle11g rlwrap-0.30]# rlwrap
Usage: rlwrap [options] command ...

 

Options:
  -a[password:]              --always-readline[=password:]
  -A                         --ansi-colour-aware
  -b                  --break-chars=
  -c                         --complete-filenames
  -C                 --command-name=
  -D <0|1|2>                 --history-no-dupes=<0|1|2>
  -f        --file=
  -F          --history-format=
  -h                         --help
  -H                   --history-filename=
  -i                         --case-insensitive
  -l                   --logfile=
  -n                         --no-warnings
  -p[ANSI colour spec]       --prompt-colour[=ANSI colour spec]
  -P                  --pre-given=
  -q                  --quote-characters=
  -m[newline substitute]     --multi-line[=newline substitute]
  -r                         --remember
  -v                         --version
  -s                      --histsize= (negative: readonly)
  -t                   --set-term-name=

 

bug reports, suggestions, updates:
http://utopia.knoware.nl/~hlub/uck/rlwrap/
[root@oracle11g rlwrap-0.30]# vi /home/oracle/.bash_profile(该文件
在你所安装的oracle目录下可找到。
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

 


:使用rlwrap


[oracle@oracle11g ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.1.0.6.0 - Production on Tue Jul 29 21:28:30 2008

 

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

 


Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> select * from v$sga;

 

NAME                      VALUE
-------------------- ----------
Fixed Size              1299116
Variable Size         155192660
Database Buffers       79691776
Redo Buffers            2347008

 

使用向上键调回最后执行的命令,Enter键重新执行或修改后按Enter键执行.
SQL> select * from v$sga;

 

NAME                      VALUE
-------------------- ----------
Fixed Size              1299116
Variable Size         155192660
Database Buffers       79691776
Redo Buffers            2347008

 

SQL>

 

 Notes:
解决在sqlplus下输错命令后正常删除的方法
[oracle@oracle11g ~]$ vi /home/oracle/.bash_profile
添加stty erase ^h


;假如在用户或是root下出现类似问题可在相应的shell默认bash中,向.bash_profile文件添加以上总结的内容和修改终端相关设置即可解决。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26879006/viewspace-721603/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-04-13

  • 博文量
    13
  • 访问量
    26129