可以通过 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'
时对我有用,如果命令正在运行。
第三,如果程序需要来自终端的输入(如 irb
或 python
),Ctrl-L 将起作用,但它不适用于 sleep 时 1;做 echo 仍在运行;完成
循环。
关于linux - 通过 dbus 将 Ctrl-L 发送到终端仿真器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34814544/