假设有两个终端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 中删除。