打开终端、运行命令并保持交互式终端打开

打开终端、运行命令并保持交互式终端打开

我对此并不抱太大希望,但我试图创建一个桌面快捷方式,当单击该快捷方式时,会打开一个终端(最好是 mate-terminal,但我并不挑剔),运行一个命令,并让终端保持打开状态互动环节。理想情况下,我可以在新窗口中向上箭头以重新运行该命令。

我尝试过的事情:

  • mate-terminal --command "bash -c 'ls;$SHELL'":我看不到运行了什么命令,也无法按向上箭头来重新运行该命令。
  • Changing the MATE terminal preferences to Keep Open:它让窗口保持打开状态,但无法交互。我所能做的就是关闭它。
  • xterm -hold -e 'bash -c "ls"&&$SHELL':我看不到运行了什么命令,也无法按向上箭头来重新运行该命令。

我想做的是为命令行应用程序创建一个快捷方式,该快捷方式打开终端并运行whatevertool -h,然后等待用户执行他们需要执行的操作。我想要的可以实现吗?

答案1

您可以简单地尝试组合--rcfile选项并修改历史记录。

export CMD="ls -h ."  && mate-terminal --command  "bash -c 'bash --rcfile <(echo \" history -s '\''$CMD'\''; $CMD\")' "

如果运行的命令更复杂,我会使用显式脚本,而不是涉及引用问题的复杂命令到文件重定向

mate-terminal --command  "bash --rcfile cmd.sh "

其中 cmd.sh

#!/bin/bash
CMD="ls -lh ."
history -s "$CMD"
$CMD

答案2

安装expect并编写以下期望脚本:

#!/usr/bin/expect
spawn bash
expect "$ "
send "yourcommand\r"
interact

(如果您的 shell 提示符以“$”以外的其他内容结尾 - 例如,您计划从 root 运行此命令 - 请在第三行进行适当更改。)

配置您的 GNOME 或 MATE 终端配置文件以运行此脚本而不是 shell,并使用该配置文件启动终端(例如gnome-terminal --window-with-profile=PROFILENAME- 创建快捷方式来运行此命令)。

这应该可以满足您的要求:您将看到正在运行的命令,并且应该能够使用向上箭头返回到它,并且终端在命令结束后保持交互状态。

相关内容