如何创建一个打开终端窗口并在其中执行命令的脚本?

当我启动Ubuntu机器时,我需要运行三个脚本,它们启动我在开发环境中使用的服务。

为此,我手动打开三个终端并输入命令。

有没有办法创建一个脚本,打开三个终端并在每个终端中执行一个命令? (每个命令应该在一个单独的终端窗口中,以便我可以看到它们的输出)。

gnome-terminal -e command 

要么

 xterm -e command 

要么

 konsole -e command 

差不多

 terminal -e command 

要在命令退出时使终端停留:

在konsole中有一个--noclose标志。

在xterm中,有一个-hold标志。

gnome-terminal ,转到编辑 – > 配置文件首选项 – > 标题 。 单击“ 命令”选项卡。 从标记为“ 退出命令”的下拉菜单中选择“ 保留终端” 。 您应该为其创建一个新的配置文件并执行

  gnome-terminal --window-with-profile = NAMEOFTHEPROFILE -e 命令 

而不是硬编码gnome-terminalkonsole等等,使用Alternatives系统。 执行默认终端仿真器的程序是:

 x-terminal-emulator 

在我的系统上,每次执行此命令时,它都会打开一个新的Konsole实例。

幸运的是,终端似乎支持执行命令的-e选项(我为konsolegnome-terminalvalidation了它)。 命令后的参数将传递给调用的命令。 Bash拒绝在我的终端中保持打开状态,需要一个额外的脚本来获取终端:

 #!/bin/sh "$@" exec "$SHELL" 

如果您将以前的脚本保存为/home/user/hacky并使其可执行,则可以使用以下命令运行脚本:

 x-terminal-emulator -e /home/user/hacky your-script optional arguments here 

完整路径是必需的,并且/home/user/hacky必须是可执行的。

我之前尝试在新的终端窗口中运行脚本可以在修订版#2中找到,在我意识到参数可以传递给x-terminal-emulator

很简单 –

 #!/bin/bash /etc/init.d/ccpd status 

这对于其他不需要在终端中显示任何内容的命令就足够了。 但是这里必须看到状态显示。
因此,它需要在终端窗口中运行

 #!/bin/bash gnome-terminal -e "/etc/init.d/ccpd status" --window-with-profile=NAMEOFTHEPROFILE 

另一篇文章打算将[]作为占位符

这里“NAMEOFTHEPROFILE”将替换为“当命令退出时保持终端”的配置文件的名称。

在此处输入图像描述

在此处输入图像描述

评论Lekensteyn的答案。 我知道这是一个老post,但对于任何发现这个有用的人(正如我刚才所做的那样)而不是在你调用的脚本中放入一个函数来制作另一个“hacky脚本”

 hacky_function() { "$@" exec "$SHELL" } 

使用“x-terminal-emulator -e / path / to / hacky_function可选参数在这里”调用脚本

不要忘记在脚本末尾添加“$ @”

使用屏幕命令和现有屏幕会话中的-d分离,并在此处重新挂接-m强制新的屏幕会话-S创建命名会话而不是使用默认名称