如何在 gnome-terminal 中执行多个命令

如何在 gnome-terminal 中执行多个命令

我有一个脚本正在运行一些(超过 15 个)应用程序,例如:

cd mypath
sleep 1
gnome-terminal -t App1 --tab -e "./App1" 
sleep 1
gnome-terminal -t App2 --tab -e "./App2" 
..
..
sleep 1
gnome-terminal -t App15 --tab -e "./App15"  

您可以注意到,这将在 15 个不同的终端中启动应用程序。

现在发生的情况是,当我./AppX通过Ctrl+杀死任何内容时C,无论出于何种原因,它都会终止程序并退出该终端。

我想要的是,当我按 Ctrl+时C,它应该只终止./AppX,但终端仍然保持打开状态,这是因为当我想AppX再次启动时,我应该只按向上箭头键和 Enter。

编辑::
得到了答案::请参阅askubuntu.com 接受的答案。

另一个问题是:如何执行多个命令,如下所示:

gnome-terminal -e "sleep 1; AppX"  

这不起作用,我尝试了各种其他方法(&、&&、|),但都失败了。

答案1

以下命令将在多 gnome-terminal 中打开带有 15 个选项卡的新终端:

cd mypath
multi-gnome-terminal \
  --add-tab -tname App1 --tcommand "./App1" \
  --add-tab -tname App2 --tcommand "./App2" \
  ...
  --add-tab -tname App15 --tcommand "./App15" \

如果您确实需要这些睡眠,您可以将它们合并:

cd mypath
multi-gnome-terminal \
  --add-tab -tname App1 --tcommand "sleep 1; ./App1" \
  --add-tab -tname App2 --tcommand "sleep 2; ./App2" \
  ...
  --add-tab -tname App15 --tcommand "sleep 15; ./App15" \

如果您需要动态更改要启动的命令的计数/列表,您可以使用以下命令:

cd mypath
cmd=(multi-gnome-terminal)
cmd=("${cmd[@]}" --add-tab -tname App1 --tcommand "sleep 1; ./App1")
cmd=("${cmd[@]}" --add-tab -tname App2 --tcommand "sleep 2; ./App2")
  ...
cmd=("${cmd[@]}" --add-tab -tname App15 --tcommand "sleep 15; ./App15")
"${cmd[@]}"

相关内容