使用用于终端应用程序的启动器,程序完成后如何使终端保持打开状态?


24

我有一个从应用程序启动器运行的终端命令。这很好用,但是有时命令会失败,因此我希望终端保持打开状态,以便查看结果。我怎样才能做到这一点?

Answers:


23

假设您的命令名为mycommand,我将更改启动器以运行此命令:

gnome-terminal -e "mycommand|less"

如果您想要一个更永久,更清洁的解决方案,请打开gnome-terminal,转到“编辑”,“配置文件”首选项,然后单击“标题和命令”选项卡。将“命令退出时”选项更改为“保持终端打开”。

现在,当您执行命令时,它将在运行某些内容时使终端保​​持打开状态。

编辑:如果您不太在意终端,则可以使用xterm的hold标志:

xterm -e "mycommand" hold

7
为了保持默认的终端“命令退出时”动作,我建议创建一个新的终端配置文件,将其设置为在命令退出后保持打开状态,并传递gnome-terminal --tab-with-profile=PROFILENAME选项。您可以通过这种方式为不同的行为设置许多配置文件:-)
反转

1
xterm -hold -e mycommand

8

您的启动器正在运行脚本吗?

在脚本末尾添加

read -p "Press any key to exit > " -n1 junk
echo 

然后您的脚本将等待,直到您选择结束它。


1
+1,并只显示如果命令失败的提示(返回一个非零的退出代码)一个能做到command || read -n1 -p "Command failed. Press any key to exit..."
尤卡Matilainen

8

在您的.desktop快捷方式中,使用此

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"

脚本完成后,Bash进程将用自身的新调用替换自身。

如果需要将带引号的参数传递给脚本,则必须转义引号:

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"

3

与其他答案略有不同的方法:运行命令,如果失败,则生成一个shell。这样,您不必将终端保持打开状态(这不会区分命令是成功还是失败),并且您可能会发现该shell在失败中特别有用。要关闭它,只需使用Ctrl-D(EOF),“退出”,Alt-F4(或您的窗口管理器用来关闭窗口的任何东西)等即可。

成功与否

#!/bin/sh
[ $# -eq 0 ] && {
  echo "$(basename $0): no command" >&2
  exit 1
}
"$@" || {
  echo "failed: $?"
  exec $SHELL
}

将此文件放置在某个位置,例如〜/ bin,然后在启动器中使用“成功或原始命令的外壳”。


0

到目前为止,这个答案是我做自己想做的最好的答案。他们建议使用要执行的命令来编写脚本,并将其与--init-file参数一起使用(特定于bash,但您可能对csh / tcsh / zsh等也可以这样做):

#!/bin/bash --init-file
commands to run

...并执行为:

xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang

0

使用watch命令。

格式:watch -n60 myCommandwatch -n60 "my command string"

  • -n指定的秒数呼叫之间的等待mycommand的 ; 例如:以上命令将每60秒永久调用myCommand一次。
  • 如果命令是多个单词,请将其放在双引号中:"my command string"

假设您想要一个启动器,该启动器显示磁盘使用情况,并保持打开状态以供读者查看。我只是在Launcher:中使用此命令
watch -n60 "df -h"df -h现在每60秒调用一次。

gnome-terminal -e "mycommand|less"之所以喜欢这样,是因为我正在运行Xubuntu,它默认情况下使用其他终端。


0

尝试右键单击启动器并输入属性。

应该有一个选项可以使终端窗口保持打开状态 在此处输入图片说明

在.desktop文件中,应存在以下条目 X-KeepTerminal=true

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.