1. 问题:
在选择已有会话执行命令时,如果当前会话有用户手动输入,会造成命令执行失败,此时需要删除用户以后输入后执行命令。
2. 解决方法
在执行命令前添加退格转义序列符 \b
。
注:
\b
的 ascii 码 10 进制为 8。
3. 代码示例
# 计算退格数
screen_content = await session.async_get_screen_contents()
current_line = screen_content.line(screen_content.number_of_lines - 1)
# 此处退格数多了没关系
backspaces = '\b' * len(current_line.string)
# 在会话中执行命令,命令会随着会话结束(tab 关闭, window关闭)而终止
await session.async_run_coprocess(command_line="echo '{}{}'".format(backspaces, command))
网友评论