当前位置: 首页>>技术问答>>正文


我怎样才能制作一个脚本来打开终端窗口并在其中执行命令?

, , ,

问题描述

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

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

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

最佳解决思路

gnome-terminal -e command

要么

xterm -e command

要么

konsole -e command

非常好

terminal -e command

当命令退出时使终端停留:

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

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

gnome-terminal中,转到编辑 – >配置文件首选项 – >标题。单击命令选项卡。选择标记为何时命令退出的drop-down菜单中的端子。你应该为它创建一个新的配置文件,然后执行

gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command

次佳解决思路

使用Alternatives系统代替hard-coding gnome-terminalkonsole等。执行默认终端仿真器的程序是:

x-terminal-emulator

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

幸运的是,终端似乎支持执行命令的-e选项(我对konsolegnome-terminal进行了验证)。该命令之后的参数被传递给被调用的命令。 Bash拒绝在我的终端中保持打开状态,需要额外的脚本来获得终端:

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

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

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

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

我之前在一个新的终端窗口中运行脚本的尝试可以在revision #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

The other post[]设为占位符

此处”NAMEOFTHEPROFILE”将被替换为“当命令退出时保留终端”的配置文件的名称。

command-line,scripts,services,ubuntu

command-line,scripts,services,ubuntu

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/623.html,未经允许,请勿转载。