在另一个存在的终端上运行命令

在另一个存在的终端上运行命令

假设有两个终端0和1。我应该向终端0输入什么命令

让终端1执行命令。

已知:{command} > /dev/pts/1 不起作用。命令在终端 0 上执行

并将结果重定向到终端 1。

答案1

你可以用 tmux 来做这件事。当你在终端 A 中启动一个会话时,窗口左下角会有一个用括号括起来的整数。这就是会话 ID。

如果你随后启动终端 B,则可以发出命令

tmux attach [id]

其中id是来自终端A的号码,您将能够从任一终端控制该终端外壳。

但是,如果您只执行上述步骤,您将失去终端 A。这里有几个方便的解决方法。首先,如果您将命令括起来attach,然后将其&& target-command放在括号中,则可以在子 shell 中运行它们。理论上,这些命令的结果应该不会影响 shellB 的环境。也就是说,当该命令的结果通常是破坏 shellB 时,我可以看到它要么成功,要么失败。

另一种选择是使用操作员在单独的进程中运行命令,&如下所示:

some-terminalB-command & tmux attach [id] && terminalA-command

我对这个方法比较有信心。不过,我们可以做得更好:

some-terminalB-command & (tmux attach [id] && terminalA-command)

这使用了两种方法,以便attach两次从 shellB 中删除。

相关内容