首页 > 解决方案 > ssh 进入 gerrit sql 不能不使用向上箭头键来获取以前的命令

问题描述

Gerrit 服务器安装在运行 Ubuntu 的远程主机上。

我的主机运行的是 Windows 10。我可以通过以下方式访问 gsql:

ssh <gerrit host>:29418 gerrit gsql

我尝试了两个不同的终端:Ubuntu Bash 和 Mingw64,它们都显示了相同的结果。当我按向上箭头时,它显示 ^[[A 而不是上一个查询。

格里特 SQL 外壳

我可以通过简单的 ssh 进入同一个远程主机来很好地使用向上箭头。

任何想法可能导致问题?

标签: command-line-interfacegerrit

解决方案


键盘将事件发送到计算机。一个事件显示“scan code nnn down”或“scan code nnn up”。在链的另一端,在终端中运行的应用程序期望以字符序列的形式输入。

当您按下 A 时,键盘发送信息“扫码 38 向下”。控制台驱动程序查找其键盘映射并将其转换为“字符 a”。

当您按下不产生字符的键或组合键时,需要根据字符对信息进行编码。少数按键和组合键有对应的控制字符,如Ctrl+A发送字符␁(字节值1),Return发送字符␍(Ctrl+M,字节值13)等。

大多数功能键没有对应的字符,而是发送以 ␛(转义,字节值 27)字符开头的字符序列。例如,键 Up 被翻译成转义序列 ␛[A(三个字符:转义、左括号、大写 A)。

似乎“gerrit gsql”提示有点“愚蠢”并且不理解大多数转义序列,因此它只是显示转义序列。␛ 字符没有字形,因此显示为 ^[。^ 符号传统上用作控制字符的前缀,而转义符是 ^[ 因为它的字节值:它是 [ 的字节值,负 64。


推荐阅读