如何使用命令打开命令行应用程序而不关闭它?

How to open a command-line application with a command without closing it?

我正在尝试编写一个脚本来打开一个命令行应用程序(在本例中为 sagemath),该应用程序在启动时将通过管道发送特定命令(附加脚本)而不在最后关闭该应用程序。

我试过类似的方法:

#!/bin/bash

echo "load(\"script.sage\")" | sage

这当然会打开 sage 加载脚本打印脚本的输出并关闭 sage。在最后一行末尾添加 & 无效。

我知道从技术上讲我可以将此脚本添加到始终在启动时加载的脚本列表中,但这不是我想要的。我认为可能会在我的脚本的某个目录中创建一个动态 link,但不确定是否有这样的目录以及它在哪里。

有什么建议吗?

编辑: 我不知道 Expect(我是 linux 的年轻人)。阅读,按照马克的建议,我设法解决了这个问题。如果将来任何人对此感兴趣,那么这就是诀窍:

#!/usr/bin/expect
set timeout 20
spawn sage
expect "sage:"
send "load(\"script.sage\")\n"
interact

您可以使用 'screen',具体取决于您需要此脚本到 运行 的动态程度。有关如何使用屏幕的信息,请参阅 http://linux.die.net/man/1/screen

您可以:

使用nohup启动程序 例如,nohup "load(\"script.sage\")" |贤者

或者,您可以使用 disown 命令。

#!/usr/bin/expect

set timeout 20

spawn sage

expect "sage:"

send "load(\"script.sage\")\n"

interact