在一个终端中执行命令并在另一个终端中获取输出
答案1
答案2
在接收终端上,执行命令w
。这将打印当前正在运行的会话列表,例如,当我运行该命令时,它会打印:
13:39:22 up 11 min, 3 users, load average: 0.32, 0.50, 0.33
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
sebastia tty8 :0 13:27 11:52 21.10s 0.31s cinnamon-session --session cinnamon
sebastia pts/1 :0 13:36 10.00s 23.90s 0.29s sudo apt-get update
sebastia pts/3 :0 13:37 1.00s 0.11s 0.01s w
你所在的那个当然是带有命令的那个w
(在列中列出WHAT
)。
在此列表中,您还会发现一个名为的部分TTY
。在那里,您将看到终端缓冲文件的名称,例如pts/3
我在其中执行的文件w
。
现在假设我想执行在 pts1 中运行的命令,并将其输出打印到 pts3。可以这样做(使用上面的命令):
sudo apt-get update > /dev/pts/3
这会将所有输出转发到 pts3。但是,它不会采取任何输入从那里开始。不幸的是,我没能找到解决方案。(欢迎补充)
根据您想要实现的目标,终端多路复用器(例如 Tmux 或 GNU Screen)可能更适合此任务。例如,使用 Tmux,请按如下方式进行:
使用命令启动 Tmux tmux
。您将进入一个新的 shell。在那里执行您的命令。
在接收终端中,运行tmux a
以连接到现有的 Tmux 会话。现在您可以与此终端进行交互。
如果你愿意,你可以随时使用Ctrl+ 键B,然后按 键从 Tmux 断开连接D。你可以使用 键从任何地方重新连接tmux a
。