当前位置: 首页 > 面试题库 >

在TERM = linux中,ctrl +箭头(左,右,…)的终端转义序列是什么

牟慎之
2023-03-14
问题内容

我正在浏览器中构建一个终端窗口(例如ajaxterm),但不知道要向ssh隧道发送哪个转义序列(通过打开paramiko.SSHClient().invoke_shell(term='linux'))。

我找到了一个按键记录器,并在带有$ TERM
==’linux’的终端中尝试了它,但是它返回ctrl+leftleft(27,91,68)相同的序列。

如果我在另一个终端中尝试键盘记录程序(使用$ TERM
==’xterm’),则会得到代码(27,91,49,59,53,68)。但是这些代码不会移动,从而无法从SSH通道生成预期的输出(这会使光标在普通linux
shell上向左移动一个字)。即使我以term =’xterm’开头paramiko也是如此。

知道我应该使用什么顺序吗?还是为什么上述顺序不起作用?

更新 :我很乐意使用其他终端类型(而不是“
linux”),但是不幸的是pyte仅适用于VTxxx终端(我相信“
linux”是类似于vt220的终端-无论如何,它都可以工作),因此xterm不起作用正确地。


问题答案:

终端是由键盘和输出设备组成的硬件设备(最初是硬拷贝打印机,后来是CRT监视器)。一台大型计算机可以连接多个远程终端。每个终端将具有用于与计算机进行有效通信的协议,对于基于CRT的终端,这包括具有特殊的“控制序列”以更改光标位置,擦除当前行/屏幕的一部分,切换到备用全屏模式。
..

终端模拟器是一种模拟那些较旧的终端之一的应用程序。它允许执行诸如光标定位,设置前景色和背景色之类的功能,…终端仿真器尝试模拟某些特定的终端协议,但是每个都有自己的一套怪癖和偏差。

Unix系统具有描述终端和终端仿真器的数据库,因此应用程序是从使用中的特定终端(或终端仿真器)中抽象出来的。较旧的数据库是termcap(5),而terminfo(5)较新的数据库。这些数据库允许应用程序查询使用中的终端的功能。功能可以是布尔值,数字功能,甚至是字符串功能,例如:如果特定终端类型具有/支持F12键,则它将具有功能“
key_f12”(长期信息名称),“ kf12”(短期信息名称),描述密钥生成的字符串的“ F2”(termcap名称)。尝试使用:tput kf12 | od -tx1

由于直接使用功能进行编程可能很麻烦,因此应用程序通常使用更高级别的库,例如curses / ncurses,slang等。

有一个称为的特殊环境变量TERM,它告诉应用程序正在与哪种终端类型通信。如果该变量存在于数据库中,则应将其设置为确切的终端类型,以获得最佳结果。这只是告诉应用程序终端了解哪些精确的协议和协议偏差。更改TERM变量并
没有 改变终端的类型,它只是改变了终端类型的应用程序认为它聊天。

所说的Ctrl+arrow只是xterm行为(取决于配置选项),根本不会反映在terminfo /
termcap数据库中,因此大多数应用程序对此一无所知。无论哪种方式,您的终端仿真器(在您的情况下pyte)都支持它,或者不支持。

假设您的主应用程序是bash或其他使用该readline库的应用程序,则您可能会改用readline backward- word(默认情况下是Meta-b / Alt-b / ESC b,可在中配置inputrc)。



 类似资料:
  • 本文向大家介绍浅谈ctrl+c,ctrl+d,ctrl+z在linux中的意义,包括了浅谈ctrl+c,ctrl+d,ctrl+z在linux中的意义的使用技巧和注意事项,需要的朋友参考一下 ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. ctrl+c是强制中断程序的执行。 ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/b

  • 问题内容: 我知道运算符的含义是大于或等于,但是我已经在一些源代码中看到了。该运算符是什么意思? 这是代码: 问题答案: 这是一个箭头功能。 箭头函数是ECMAscript 6引入的一种短语法,可以与使用函数表达式的方式类似地使用。换句话说,您经常可以使用它们代替诸如的表达式。但是它们有一些重要的区别。例如,它们不绑定自己的值(请参见下面的讨论)。 箭头功能是ECMAscript 6规范的一部分。

  • 我读过segues上的其他帖子,但没有一篇能解决我的问题。 简单地说,我的ViewController就像一本书一样被订购。我希望从左到右的向后过渡(例如:从第9页到第8页)始终存在(滑动)。我想从右到左向前过渡(从第9页到第10页)。 是的,如果您一页接一页地分页,我的导航控制器后退按钮(左上角)会显示为这样。但是,如果您从索引跳入,那么导航控制器上的后退功能会将您带回索引。 我的目标是,如果用

  • 在我用Java创建的Window 95模拟器的“位置信息”JDialog中,在“你现在在哪个国家?”的问题下面有一个JComboBox。 为什么JComboBox没有显示其默认项和右侧的箭头?JComboBox中有一个指向下方的箭头。 以下是位置信息JDialog中包含的对象的相关代码片段:

  • 我有一个简单的JavaFX应用程序,它有一个表视图。表格视图显示了一些按特定顺序排序的数据。有没有办法显示箭头(默认情况下)指示数据已按该顺序排序? 我的代码如下:

  • 请问下, Notion这里的图标,带有箭头的和不带箭头的区别是什么呢?