可以通过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"
(runCommand both)
答案 0 :(得分:1)
这对我有用:
qdbus org.kde.konsole /Sessions/1 sendText $'\014'
首先,要从八进制代码生成一个字符,语法"\033"
将在C中起作用,但在Bash中不起作用。
其次,虽然“ESC [2 J”是擦除屏幕的VT100代码,但仅当我echo $'\033[2J'
时它才适用于我,并且如果命令正在运行则不起作用。
第三,如果程序期望从终端输入(例如irb
或python
),Ctrl-L将起作用,但它不适用于while sleep 1; do echo Still running; done
循环。< / p>