在Linux中使用Db2 CLP中的箭头键吗?

问题描述 投票:1回答:2

当我在Linux上运行Db2 CLP(命令行处理器)并保留在CLP中时,箭头键无法正常工作。

例如,不向我展示我执行的上一个命令,而是按向上箭头生成:^ [[A并按向左箭头生成:^ [[D。

见下文:

[db2inst1@willow ~]$ db2
(c) Copyright IBM Corporation 1993,2007
Command Line Processor for DB2 Client 11.5.0.0

You can issue database manager commands and SQL statements from the command
prompt. For example:
    db2 => connect to sample
    db2 => bind sample.bnd

For general help, type: ?.
For command help, type: ? command, where command can be
the first few keywords of a database manager command. For example:
 ? CATALOG DATABASE for help on the CATALOG DATABASE command
 ? CATALOG          for help on all of the CATALOG commands.

To exit db2 interactive mode, type QUIT at the command prompt. Outside
interactive mode, all commands must be prefixed with 'db2'.
To list the current command option settings, type LIST COMMAND OPTIONS.

For more detailed help, refer to the Online Reference Manual.

db2 => ^[[A

我在运行于Windows 10的本地cygwin终端中使用bash,在远程CentOS Linux机器上使用bash,并使用SSH进行连接。是否有配置选项可解决此问题?

linux bash ssh db2 keymapping
2个回答
2
投票

这提供了解决方法,而不是解决方法。

Db2交互式CLP(带有默认提示符db2 =>)不能正确处理Linux外壳的上下箭头键,并且我不知道解决方法。即使用户的默认外壳为bash,交互式Db2 clp也无法识别向上和向下箭头键。

Db2 Interactive CLP本机可以正确处理MS-Windows上的向上和向下箭头键。

一种解决方法是在Db2交互式CLP中一起使用History命令和R(runcmd)。例如,如果您在交互式CLP中运行“历史记录”命令,它将显示该会话在此会话中到目前为止运行的命令(但不是先前的会话),并且每个命令都有一个数字。您可以使用R n(其中n是数字)重复该命令。您可以在提交之前使用edit n编辑命令。您可以通过变量控制历史记录中的条目数,用于编辑历史记录的编辑器等,有关详细信息,请参考Db2知识中心。

另一种解决方法是使用基于Java的clpplus命令,在Linux上该命令将对上下箭头键做出正确的反应。

第三种解决方法是从本地使用MS-Windows的交互式CLP(但是需要在MS-Windows上安装合适的Db2客户端),然后从那里管理远程数据库。尴尬。但是方便快捷的东西,您无需等待ssh会话打开,登录,运行东西并退出。

许多开发人员和DBA使用的第四个选项是,从不使用CLP的交互模式,而仅使用命令模式,然后使用linux shell的功能进行调用和编辑等。如果为自己喜欢的编辑器适当配置了外壳程序选项,则向下箭头键的行为正确。


1
投票

箭头键在Db2 CLP中无法正常工作。使用edit命令运行您的首选编辑器,以编辑您最后一次调用的语句(或历史记录中的所有内容),然后再运行此编辑后的命令。使用history命令获取先前调用的语句的编号。例如,您可以在runcmde[dit]命令中使用此数字。为了能够在交互模式下使用多行命令,最好使用db2 -t(语句终止符== ;)或db2 -td@(语句终止符== @)进入交互模式或使用您的首选)。

© www.soinside.com 2019 - 2024. All rights reserved.