如何从Java在linux终端上交互执行多个命令?

如何从Java在linux终端上交互执行多个命令?,java,linux,terminal,torch,Java,Linux,Terminal,Torch,我想在linux终端中运行多个命令,如下所示: 1。我将运行假设火炬,我编写了th命令,它打开了火炬promt。 2。现在,如果我从java执行下一个命令,它将在linux终端的torch promt中运行。 你可以举另一个例子,比如: 1。首先,我将从java在linux终端上运行python。 2。然后从java运行python解释器中的1+1或任何东西。 所以这里我的第二个命令依赖于第一个命令。我想以顺序的方式运行终端中的命令 编辑:另一种方法可以。假设我在linux终端上运行一个pyt

我想在
linux终端中运行多个命令,如下所示:

1。我将运行假设
火炬
,我编写了
th
命令,它打开了火炬promt。
2。现在,如果我从java执行下一个命令,它将在linux终端的torch promt中运行。

你可以举另一个例子,比如:

1。首先,我将从java在linux终端上运行
python

2。然后从java运行python解释器中的
1+1
或任何东西。
所以这里我的第二个命令依赖于第一个命令。我想以顺序的方式运行终端中的命令

编辑:另一种方法可以。假设我在linux终端上运行一个python解释器,现在我想从java执行一个命令,该命令将在特定打开的linux终端的python解释器中运行我可以这样做吗??

我已尝试使用以下命令运行命令:

        String line;
            try
            {

                String execstr= "th"; //It opens the torch promt in linux terminal.

                Process p = Runtime.getRuntime().exec(execstr);
                BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));

                /*if((line= input.readLine())==null)
                    System.out.println("blank");*/

                while ((line = input.readLine()) != null) 
                {
                    System.out.println(line);
                }
                input.close();
            }
            catch(Exception e)
            {

                e.printStackTrace();
            }

        }
    }
但是现在在这个命令之后,我如何在promt中从java运行一个命令,这意味着我希望以交互方式运行它


那么如何保存上一个命令的状态并将其用于下一个命令呢?

使用
p.getOutputStream()
获取一个流,您可以在其中为运行的程序写入所需的输入。(我知道,命名有点混乱)

只是相关部分:

    Process p = Runtime.getRuntime().exec(execstr);
    BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
    OutputStream ops = p.getOutputStream();
    ops.write("echo hello world".getBytes());
    ops.close();            

    while ((line = input.readLine()) != null) 
    {
       System.out.println(line);
    }
    input.close();

如果我在linux终端中写入th,它将打开一个th解释器,我有一个torch7模型在该解释器中运行..现在我想在该th解释器中运行另一个命令,它以前是从Java运行的,我在p.getOutputStream和ops.write()函数中实际在做什么??我可以从java运行一个命令到linux中打开的终端吗?我不知道你的答案是否适合我的问题??你写进
ops
的任何东西都是进程p的输入;在您的示例中,它被用作
th
的输入,我也不确定,因为您的问题有点难以理解,对不起:-/