【问题标题】:How to go home directory for all Konsole tabs open from bash script? [closed]如何从 bash 脚本打开所有 Konsole 选项卡的主目录? [关闭]
【发布时间】:2019-01-17 01:58:23
【问题描述】:

如何使用 Debian 9 运行能够在主目录中设置所有打开的终端实例的脚本。

【问题讨论】:

  • 每个终端都必须运行脚本...或者您可以将cd 命令粘贴到每个窗口...或者您是否希望所有新终端在打开时自动更改到此特定目录?
  • 当我运行脚本时,它应该将所有终端实例放在 /home EG 中。如果我打开了 2 个实例: 1. at /etc 和 2.at /bin 当我运行脚本时,它应该将实例 1. at /home 和实例 2. at /home 也放在。
  • 我不确定这是否可以做到……比如首先找到所有终端/konsoles(或所有交互式 bash),然后发送信号或其他东西来运行命令。或者也许找到所有 konsole 窗口,然后粘贴命令可能会更容易,但是如果终端已经在运行某些东西,或者正在编辑命令行怎么办......有趣。但是,也许只是进入每个终端并输入 cd + ENTER 是最简单的(普通 cd 更改为我的家,我认为这是默认行为)
  • @Xen2050 当然可以,konsole 可以通过 dbus 进行编程。有一个可以在会话上执行的 runCommand() 方法,请参阅我的答案。

标签: bash debian konsole


【解决方案1】:

这可以通过 DBUS 完成,例如:

for service in `qdbus | grep org.kde.konsole-`; do 
    for session in `qdbus $service | grep ^/Sessions/`; do
        qdbus $service $session org.kde.konsole.Session.runCommand "cd"
    done
done

这将找到所有“服务”(Konsole 进程),然后找到每个服务的所有会话,然后将命令/字符“cd”发送到所有这些会话。

如果您只想发送到特定的 konsole 进程,则需要替换第一个 for 循环。

另外值得注意的是,即使会话正在运行 ssh 到远程服务器,这也可以工作。所有 runCommand() 方法所做的就是将字符发送到会话。但这也意味着会话需要有一个准备好接受命令的 shell 提示符,而不是在运行其他命令的过程中。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多