如何使用阻塞调用启动新的gnome-terminal?

时间:2015-07-23 09:25:13

标签: linux bash gnome-terminal

我需要从我的脚本中打开一个新的终端,但我想等待该终端退出,然后继续执行其余的脚本。我知道

gnome-terminal -e 'nano test.txt'

打开一个新的终端窗口,其中“test.txt”以nano打开,但调用脚本不会被阻止。在继续原始脚本之前,有没有办法等待新终端退出?

3 个答案:

答案 0 :(得分:1)

例如,您可以使用&&(另请参阅What is the purpose of "&&" in a shell command?):

gnome-terminal -e 'nano test.txt' && sleep 5 && echo "Done"

答案 1 :(得分:1)

为了读者的利益:@ Feiteira的答案曾经是正确答案,但gnome-terminal不再支持。来自--disable-factory的选项gnome-terminal got removed

在这里解释几个人的不同观察:

gnome-terminal仅阻止,如果它是它的第一个实例。然后,此单个实例充当将来gnome-terminal所有调用的服务器。那些其他gnome-terminal调用然后将所有内容交给此服务器并立即终止。因此,您可以观察到两种行为:“阻塞”(当它是唯一的单个实例时)和“非阻塞”(当另一个实例已在运行时)。

例如,Ubuntu 16.04使用了a wrapper来模拟这个缺失的选项。然而,这个包装器很复杂。这是通过启动另一个服务器(具有另一个服务名称)来完成的。对于此服务器,同样的假设成立(您可以将其他gnome-terminal附加到此服务器,然后其他人也会立即返回。)

我的建议是停止使用gnome-terminal并切换到开箱即用的内容。例如,xfce4-terminal正式支持成熟终端窗口的所有必要选项:

xfce4-terminal --disable-server -x nano test.txt

同样xfce4-terminal引入了--hold,它允许您查看命令的输出。遗憾的是--hold有一个错误(至少在Ubuntu 16.04下),导致它(通常)截断输出(如果命令终止,终端关闭得太早,所以PTY的所有仍然缓冲的输出都没有如果你对PTYs不够谨慎,这是一个众所周知的常见错误。

答案 2 :(得分:0)

您想要的选项是: - disable-factory

gnome-terminal --disable-factory ...
相关问题