【发布时间】:2018-06-11 17:03:52
【问题描述】:
*请注意,我正在尝试通过脚本自动完成所有操作。显然我可以很容易地手动完成。
编辑
在更好地理解了这个问题之后,我可以更好地提出这个问题。我正在尝试将命令写入给定终端的标准输入。它们需要被接受并作为该终端中的命令运行。
我需要做什么:
我需要从 shell 脚本打开一个终端。我们将其称为终端 1。我需要从终端 1 运行命令。
然后,我需要打开第二个终端(终端 2)并运行第二个命令并等待该命令运行完成。
现在的问题是,我如何返回 到终端 1 并从该终端执行另一个命令? (然后我需要返回终端 2 并执行另一个命令,但这应该是与答案相同的过程)。
必须有某种方法在实例化时为终端实例保留进程 ID
gnome-terminal -e *command* <something to get PID of resulting terminal here?>
我找到的相关答案(没有我想要的所有答案):
- 我已经了解了如何运行命令并使终端保持打开状态:
- How to invoke bash, run commands inside the new shell, and then give control back to user?
- https://unix.stackexchange.com/questions/123103/how-to-keep-bash-running-after-command-execution
- 我已经了解了如何运行多个命令:
- Execute multiple command onto same terminal using bash script
免责声明
我已经使用 Linux 很长一段时间了,并且很喜欢在终端上工作。然而,这是我以前从未尝试过的事情。如果我只是错过了有关终端如何运行的基本知识,请指出必要资源的方向以加快速度。
【问题讨论】:
-
你能解释一下为什么这是你的目标吗?根据我的经验,这不是一个常见的需求,并且有可能(很可能)在没有这种方法的情况下还有其他东西可以实现您的目标。
-
@jeremysprofile,我在虚拟机上运行了一个大型模拟。部分软件在容器中运行。为了初始化和运行,您必须手动在 docker 容器和 VM 之间来回切换并运行命令。我正在尝试自动化这个过程。虽然我应该能够在没有回答这个问题的情况下让它工作,但我相信答案会让它更简单、更干净
-
有趣。不确定。您可以通过在后台运行它来获取 gnome-terminal 的 PID(在命令后放置
&),然后var=$!将让var保存 gnome-terminal 进程的 pid。然后你可以wait $var等等。不确定这是否有帮助。也不确定 gnome-terminals 如何帮助您在容器及其主机之间来回切换。如果这还不够,您能否提供有关如何在主机和容器中运行终端的更多详细信息? -
@jeremysprofile。这很有帮助,我不知道 var=$!诡计。关于 gnome-terminal,我真的想回到已经打开容器的终端 1 并让它更改目录并执行脚本。我意识到您可以从不同的终端重新登录到容器。这可能是这里的解决方案。
-
@jeremysprofile,我刚刚发现这几乎完全完成了我最初尝试做的事情,我很可能会将它作为这篇文章的答案。需要注意的是,就执行命令而不仅仅是显示文本而言,我还没有让它表现得完全符合我的预期,但我认为它应该可以工作:serverfault.com/a/178470