2024-10-01 22:33:51 发布
网友
我想模拟用户与远程终端的交互 从终端仿真器中删除行的捷径是Ctrl+U。你知道吗
假设telnet会话已启动:
HOST='1.1.1.1' tn = telnetlib.Telnet(HOST) tn.write('wrongstring')
现在我需要删除这一行。我该怎么做?如何通过发送Ctrl+U到终端写什么?你知道吗
编辑:这就成功了
tn.write('\x15')
不知道为什么下面建议的ASCII序列不起作用。你知道吗
除非您向远程shell解释器提供输入,否则发送controlU将无济于事。你知道吗
如果您正在写入接受“ANSI escapes”的终端,它可能知道如何删除当前行。参考XTerm Control Sequences:
CSI Ps K Erase in Line (EL). Ps = 0 -> Erase to Right (default). Ps = 1 -> Erase to Left. Ps = 2 -> Erase All.
你可以通过写"\033[2K"来删除整行。不会移动光标。也可以将光标移到左边距(在许多终端上)
"\033[2K"
CSI Ps G Cursor Character Absolute [column] (default = [row,1]) (CHA).
通过写"\033[G"。最后,如果必须删除前面的行,则可以使用CPL或VPA控制序列向上移动光标(这些控制序列的实现不太广泛)。你知道吗
"\033[G"
CPL
VPA
除非您向远程shell解释器提供输入,否则发送controlU将无济于事。你知道吗
如果您正在写入接受“ANSI escapes”的终端,它可能知道如何删除当前行。参考XTerm Control Sequences:
你可以通过写
"\033[2K"
来删除整行。不会移动光标。也可以将光标移到左边距(在许多终端上)通过写
"\033[G"
。最后,如果必须删除前面的行,则可以使用CPL
或VPA
控制序列向上移动光标(这些控制序列的实现不太广泛)。你知道吗相关问题 更多 >
编程相关推荐