我需要从我的脚本中打开一个新的终端,但我想等待该终端退出,然后继续执行其余的脚本。我知道
gnome-terminal -e 'nano test.txt'
打开一个新的终端窗口,其中“test.txt”以nano打开,但调用脚本不会被阻止。在继续原始脚本之前,有没有办法等待新终端退出?
答案 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 ...