Rob*_*mer 1 python terminal ansi-escape terminal-emulator
诸如resize询问终端其大小之类的程序。最终,他们将向标准输出发送一些(ANSI)转义序列,并期望终端对这些序列本身做出反应,返回一些字节。
该机制的效果通过以下交互式 Python 代码片段可见:
\n\n>>> print('\\x1b[21;t')\nRun Code Online (Sandbox Code Playgroud)\n\nGnome 终端将在标准输入上插入与窗口标题相关的可见内容。
\n\n哪个脚本片段将促使终端写入\xe2\x80\x99s 大小(以字符为单位)?如果返回的大小不可见,则应进行一些简单的转换才能看到某些内容。Shell、Python、Perl,任何语言都可以。由于这将是特定于终端的,因此任何常见的终端仿真器都可以(例如 xterm、gnome-terminal、terminator 等)。
\n\n澄清:我不关心告诉我大小的程序。我知道 TIOCGWINSZ,它不能通过串行线路工作。我想查看使用转义序列的代码,它实际上在串行线路上工作。
\n以下程序保存当前光标位置;将光标移至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)
资源: