如何在Java终端上以交互方式执行多个命令?

时间:2016-04-07 11:43:39

标签: java linux terminal torch

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

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

  你可以采取另一个例子:

1. 首先,我将在java终端从linux终端运行python 2. 然后从java运行1+1或python解释器中的任何内容 所以这里我的第二个命令依赖于第一个命令。我想以顺序方式在终端中运行命令。

编辑:另一种方法是do.Suppose我有一个在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中的命令,这意味着我想以交互方式运行它?

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

1 个答案:

答案 0 :(得分:0)

使用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();