如何通过阻止呼叫启动新的 gnome 终端?
How to start new gnome-terminal with blocking call?
我需要从我的脚本中打开一个新终端,但我想等待该终端退出,然后再继续脚本的其余部分。我知道
gnome-terminal -e 'nano test.txt'
打开一个新终端 window,"test.txt" 在 nano 中打开,但调用脚本不会被阻止。有没有办法等待新终端退出,然后再继续原来的脚本?
例如,您可以使用 &&
(另请参阅 What is the purpose of "&&" in a shell command?):
gnome-terminal -e 'nano test.txt' && sleep 5 && echo "Done"
你想要的选项是:--disable-factory
gnome-terminal --disable-factory ...
为了 reader 的利益:@Feiteira 的答案曾经是正确答案,但 gnome-terminal
不再支持。选项 --disable-factory
got removed 来自 gnome-terminal
.
在这里解释几个人的不同观察:
gnome-terminal
仅块,如果它是它的第一个实例。然后,此单个实例充当 gnome-terminal
所有未来调用的服务器。那些其他 gnome-terminal
调用然后将所有内容移交给该服务器并立即终止。因此,您可以观察到两种行为:"blocking"(当它是唯一的单个实例时)和 "nonblocking"(当另一个实例已经 运行 时)。
有 a wrapper,例如 Ubuntu 16.04 使用的,它模拟了这个缺失的选项。然而,这个包装器很复杂。这是通过启动另一个服务器(使用另一个服务名称)来完成的。对于此服务器,同样的假设成立(您可以将其他 gnome-terminal
附加到此服务器,然后其他人也会立即返回)。
我的建议是停止使用 gnome-terminal
并改用开箱即用的东西。例如 xfce4-terminal
正式支持成熟终端的所有那些绝对必要的小选项 window:
xfce4-terminal --disable-server -x nano test.txt
同时 xfce4-terminal
引入了 --hold
,它允许您查看命令的输出。可悲的是 --hold
有一个错误(至少在 Ubuntu 16.04 下),这导致它(经常)截断输出(如果命令终止,终端会过早关闭,所以所有仍然缓冲的输出PTY 没有进入 window。如果您对 PTY 不够小心,这是一个众所周知的常见错误。
我需要从我的脚本中打开一个新终端,但我想等待该终端退出,然后再继续脚本的其余部分。我知道
gnome-terminal -e 'nano test.txt'
打开一个新终端 window,"test.txt" 在 nano 中打开,但调用脚本不会被阻止。有没有办法等待新终端退出,然后再继续原来的脚本?
例如,您可以使用 &&
(另请参阅 What is the purpose of "&&" in a shell command?):
gnome-terminal -e 'nano test.txt' && sleep 5 && echo "Done"
你想要的选项是:--disable-factory
gnome-terminal --disable-factory ...
为了 reader 的利益:@Feiteira 的答案曾经是正确答案,但 gnome-terminal
不再支持。选项 --disable-factory
got removed 来自 gnome-terminal
.
在这里解释几个人的不同观察:
gnome-terminal
仅块,如果它是它的第一个实例。然后,此单个实例充当 gnome-terminal
所有未来调用的服务器。那些其他 gnome-terminal
调用然后将所有内容移交给该服务器并立即终止。因此,您可以观察到两种行为:"blocking"(当它是唯一的单个实例时)和 "nonblocking"(当另一个实例已经 运行 时)。
有 a wrapper,例如 Ubuntu 16.04 使用的,它模拟了这个缺失的选项。然而,这个包装器很复杂。这是通过启动另一个服务器(使用另一个服务名称)来完成的。对于此服务器,同样的假设成立(您可以将其他 gnome-terminal
附加到此服务器,然后其他人也会立即返回)。
我的建议是停止使用 gnome-terminal
并改用开箱即用的东西。例如 xfce4-terminal
正式支持成熟终端的所有那些绝对必要的小选项 window:
xfce4-terminal --disable-server -x nano test.txt
同时 xfce4-terminal
引入了 --hold
,它允许您查看命令的输出。可悲的是 --hold
有一个错误(至少在 Ubuntu 16.04 下),这导致它(经常)截断输出(如果命令终止,终端会过早关闭,所以所有仍然缓冲的输出PTY 没有进入 window。如果您对 PTY 不够小心,这是一个众所周知的常见错误。