我如何“手动”让我的终端返回其(字符)大小?

Rob*_*mer 1 python terminal ansi-escape terminal-emulator

诸如resize询问终端其大小之类的程序。最终,他们将向标准输出发送一些(ANSI)转义序列,并期望终端对这些序列本身做出反应,返回一些字节。

\n\n

该机制的效果通过以下交互式 Python 代码片段可见:

\n\n
>>> print('\\x1b[21;t')\n
Run Code Online (Sandbox Code Playgroud)\n\n

Gnome 终端将在标准输入上插入与窗口标题相关的可见内容。

\n\n

哪个脚本片段将促使终端写入\xe2\x80\x99s 大小(以字符为单位)?如果返回的大小不可见,则应进行一些简单的转换才能看到某些内容。Shell、Python、Perl,任何语言都可以。由于这将是特定于终端的,因此任何常见的终端仿真器都可以(例如 xterm、gnome-terminal、terminator 等)。

\n\n

澄清:我不关心告诉我大小的程序。我知道 TIOCGWINSZ,它不能通过串行线路工作。我想查看使用转义序列的代码,它实际上在串行线路上工作。

\n

Rob*_*obᵩ 5

以下程序保存当前光标位置;将光标移至999,999;查询终端当前位置;并恢复光标位置。

假设您的终端小于 999x999,这将有效地查询终端的大小。

import sys
print('\033[s\033[999;999H\033[6n\033[u')
print(repr(next(sys.stdin)))
Run Code Online (Sandbox Code Playgroud)

资源: