linux - 通过 dbus 将 Ctrl-L 发送到终端仿真器

标签 linux terminal dbus konsole

可以通过 dbus 将文本发送到终端仿真器 konsole,如下所示:

qdbus org.kde.konsole /Sessions/1 sendText "hello"

但是我想远程清空指定终端窗口的屏幕。 所以我尝试了:

qdbus org.kde.konsole /Sessions/1 runCommand "clear"

部分是我想要的。唯一的问题:当进程正在运行时,屏幕不会被清除。

在终端模拟器中,在这种情况下,组合键“Ctrl + L”可以完成这项工作。

所以我正在尝试为此快捷方式发送一个带有转义字符的字符串。 这行得通吗?然而,这不行;

qdbus org.kde.konsole /Sessions/1 sendText "\033[2J"

(都没有运行命令)

最佳答案

这对我有用:

qdbus org.kde.konsole /Sessions/1 sendText $'\014'

首先,要从其八进制代码生成一个字符,语法 "\033" 在 C 中有效,但在 Bash 中无效。

其次,虽然“ESC [ 2 J”是用于删除屏幕的 VT100 代码,但它仅在我 echo $'\033[2J' 时对我有用,如果命令正在运行。

第三,如果程序需要来自终端的输入(如 irbpython),Ctrl-L 将起作用,但它不适用于 sleep 时 1;做 echo 仍在运行;完成循环。

关于linux - 通过 dbus 将 Ctrl-L 发送到终端仿真器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34814544/

相关文章:

linux - Mplayer:每秒缩略图

bash - Hook bash 中的所有命令输出

QtDbus 在 Windows 7 上的 Qt5.4.1 中不工作

java - Android 套接字错误

linux - 读取 INI 文件 perl 中的新格式

linux - Bash 脚本不能正常工作

bluetooth - 在内核 4.1 中,使用 Bluez 5.31 的 Dbus API 写入特征值失败

c - DBus:使用直接 dbus API 测量数据交换的时间

linux - 在 shell 脚本中找不到命令

python - 如何使用参数运行python脚本?