问题描述
我有一个从应用程序启动器运行的终端命令。这很好用,但是有时命令会失败,所以我希望终端保持打开状态,以便查看结果。我怎样才能做到这一点?
最佳方案
假设您的命令名为mycommand
,我将更改启动器以运行此命令:
gnome-terminal -e "mycommand|less"
如果您想要一个更永久,更清洁的解决方案,请打开gnome-terminal,转到“编辑”,“配置文件”首选项,然后单击“标题和命令”选项卡。将“命令退出时”选项更改为“保持终端打开”。
现在,当您执行命令时,它将在运行某些命令时使终端保持打开状态。
编辑:如果您不太在意终端,则可以使用xterm的hold标志:
xterm -e "mycommand" hold
次佳方案
您的启动器正在运行脚本吗?
在脚本末尾添加
read -p "Press any key to exit > " -n1 junk
echo
然后您的脚本将等待,直到您选择结束它。
第三种方案
在您的.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"
第四种方案
与其他答案略有不同的方法:运行命令,如果失败,则生成一个shell。这样,您不必将终端保持打开状态(这不会区分命令是成功还是失败),并且您可能会发现该Shell在失败中特别有用。要关闭它,只需使用Ctrl-D(EOF),”exit”,Alt-F4(或您的窗口管理器用来关闭窗口的任何东西),等等。
success-or-shell
#!/bin/sh
[ $# -eq 0 ] && {
echo "$(basename $0): no command" >&2
exit 1
}
"$@" || {
echo "failed: $?"
exec $SHELL
}
将此file放在某个位置,例如〜/bin,然后在启动器中使用“ success-or-shell您的原始命令”。