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

Using arrow keys within Db2 CLP in Linux?

当我 运行 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

我在我的本地 cygwin 终端中使用 bash,运行 在 Windows 10 上,bash 在我的远程 CentOS Linux 盒子上,并且使用 SSH 连接。是否有配置选项来解决这个问题?

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

Db2 交互式 CLP(默认提示 db2 =>)无法正确处理 linux shell 的向上和向下箭头键,我不知道如何修复。即使用户的默认 shell 是 bash,交互式 Db2 clp 也无法识别向上和向下箭头键。

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

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

另一种解决方法是使用基于 java 的 clpplus 命令,该命令在 linux 上将正确响应向上和向下箭头键。

第三种解决方法是在本地使用 MS-Windows 中的交互式 CLP(但是需要在 MS-Windows 上安装合适的 Db2 客户端),并从中管理远程数据库那里。尴尬的。但是对于不需要等待 ssh 会话打开、登录、运行 内容和退出的快速操作来说非常方便。

许多开发人员和 DBA 使用的第四个选项是从不使用 CLP 的交互模式,只使用命令模式,然后使用 linux shell 的功能调用和编辑等的目的。如果您为您最喜欢的编辑器适当地配置 shell 选项,则向上和向下箭头键可以正常工作。

箭头键在 Db2 CLP 中无法正常工作。
使用 edit 命令 运行 您首选的编辑器来编辑您最后一次调用的语句(或历史记录中的任何内容),之后可以 运行 此编辑的命令。
例如,使用 history command to get the number of your statement previously invoked. You may use this number in the runcmde[dit] 命令。
为了能够在交互模式下使用多行命令,最好使用db2 -t(语句终止符== ;)或db2 -td@(语句终止符= = @ 或使用您喜欢的那个)。

作为 Linux 的另一种解决方法:您可以安装包 rlwrap 然后使用

rlwrap db2 -t

这将允许您使用向上和向下箭头键调用命令历史记录。使用 re 命令的 Db2 的本机 history-recall 命令也可以继续工作。

rlwrap v 0.43 2016 年 7 月 19 日

* WHAT IT IS:

rlwrap is a 'readline wrapper', a small utility that uses the GNU readline library to allow the editing of keyboard input for any command.