我想在终端窗口的特定实例中运行特定命令。
示例: - 我打开多个终端窗口实例,比如 2 个:A 和 B - 现在我想shutdown
从新终端 C 在终端 A 上运行命令,而不影响终端 B。
答案1
有一个名为 xdotool 的命令行工具,允许您使用进程 ID、进程类型、类或名称模拟按键、命令等。
我能够通过 PID 区分不同的终端实例,甚至可以重命名它们。因此,它不会将当前用户和目录放在窗口顶部,而是具有您设置的唯一名称(例如 A、B 和 C)。xdotool 使用它作为标识符。比记住大约 10 位 PID 更容易。
因此在终端 A 中,您可以告诉 xdotool 模仿某个命令的按键,并让它们在终端 C 中执行。您也应该能够将这些命令放入脚本中。
测试了一些脚本,效果很好。我可以让 A 告诉 B 运行本地服务器。在同一个脚本中,我使用了 xdotool 的延迟函数,这样 B 就会告诉 C 运行一个脚本来结束 B 中的服务器进程。所以看起来你可以用它变得相当复杂。
唯一的烦恼是标准终端不接收命令或按键,除非它是活动窗口。只需一个额外的命令就可以解决这个问题,但并不理想。Xterm 有一个设置,可以让它在不是活动窗口时接收命令。