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

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

我有一个从应用程序启动器运行的终端命令。这个命令运行得很好,但有时命令会失败,所以我想让终端保持打开状态,这样我就可以看到结果。我该怎么做?

答案1

假设您的命令被称为mycommand,我会改变我的启动器来运行它:

gnome-terminal -e "mycommand|less"

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

当您执行命令时,它应该在某些东西运行时保持终端打开。

编辑:如果您并不真正关心终端,那么您可以只使用 xterm 的 hold 标志:

xterm -e "mycommand" hold

答案2

你的启动器正在运行脚本,对吗?

在脚本末尾添加

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

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

答案3

在你的 .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"

答案4

这个问题有一个很好的答案,对我有用。

长话短说:每个终端仿真器都有不同的方式在命令退出时保持其窗口打开。

如果你想使用特定的终端应用程序,然后您可以添加它提供的相应命令行选项(如果存在),例如roxterm --hold。或者仅供您自己使用,您可以在该模拟器的设置窗口中切换选项(例如“命令退出后保持窗口打开”)。

如果你想使用默认终端应用程序,(例如通过 x-terminal-emulator 或 exo-open)那么您需要在脚本本身中使用一个技巧:在其末尾打开另一个 shell,例如...; bash

这对于具有“自定义操作”功能的应用程序也非常有效,例如应用程序查找器 (xfce4-appfinder) 和 Thunar。例如:

图纳尔

Name: Show Path in Terminal
Command: exo-open --launch TerminalEmulator bash -c "echo '%f';bash"

应用程序查找器

Pattern: $
Command: exo-open --launch TerminalEmulator bash -c "%s;bash"

在上面的例子中,exo-open --launch TerminalEmulator打开默认的终端仿真器,之后的所有内容都被读为要运行的命令。bash -c使用指定的命令运行一个新的 bash shell 进程。"...;bash"是命令,完成后,运行一个新的 bash shell 进程,同时保持终端窗口打开。

sleep 36500d另一个想法是在脚本末尾添加内容,这样你就有 100 年的时间来审查输出。

您还可以让脚本监听终端关闭信号并覆盖(或“捕获”)它。

桌面入门

Exec=exo-open --launch TerminalEmulator bash -c "function handle_sigint() { echo 'SIGINT received... but I will not close by myself.'; }; trap 'handle_sigint' 0; while true; do echo 'Running script...'; sleep 1; done;"

所有这些都适用于脚本文件。不幸的是,我无法让上述任何一项从桌面条目文件 (.desktop) 运行。

相关内容