ssh into gerrit sql не может не использовать клавишу со стрелкой вверх для получения предыдущих команд - PullRequest
0 голосов
/ 17 мая 2018

Сервер Gerrit установлен на удаленном хосте под управлением Ubuntu.

Мой хост-компьютер работает под управлением Windows 10. Я могу получить доступ к gsql через:

ssh <gerrit host>:29418 gerrit gsql

Я пробовал два разных терминала: UbuntuBash & Mingw64, и они оба показали одинаковые результаты.Когда я нажимал стрелку вверх, он показывал ^ [[A вместо предыдущего запроса.

Gerrit SQL shell

Я могу использовать стрелку вверх просто через ssh втот же удаленный хост.

Есть идеи, что может быть причиной проблемы?

1 Ответ

0 голосов
/ 17 мая 2018

Клавиатуры отправляют события на компьютер. Событие говорит «сканировать код nnn вниз» или «сканировать код nnn вверх». На другом конце цепочки приложения, работающие в терминале, ожидают ввода в виде последовательности символов.

Когда вы нажимаете A, клавиатура отправляет информацию «код сканирования 38 вниз». Драйвер консоли ищет свою таблицу ключей и преобразует ее в «символ a».

Когда вы нажимаете клавишу или комбинацию клавиш, которая не приводит к символу, информация должна быть закодирована в виде символов. Несколько клавиш и комбинаций клавиш имеют соответствующие управляющие символы, например, Ctrl + A отправляет символ ␁ (значение байта 1), Return отправляет символ ␍ (Ctrl + M, значение байта 13) и т. Д.

Большинство функциональных клавиш не имеют соответствующего символа и вместо этого отправляют последовательность символов, которая начинается с символа ␛ (escape, значение байта 27). Например, клавиша Up переводится в escape-последовательность ␛ [A (три символа: escape, открывающая скобка, заглавная A).

Кажется, что приглашение "gerrit gsql" является "тупым" и не понимает большинство escape-последовательностей, поэтому просто отображает escape-последовательность. Для символа gly символа нет, поэтому он отображается как ^ [. Знак ^ традиционно используется в качестве префикса для управляющих символов, а escape - ^ [из-за его байтового значения: это байтовое значение [, минус 64.

...