通过java运行时在mac终端中的背靠背命令

时间:2016-03-24 21:40:00

标签: java process terminal runtime

基本上我需要通过java程序执行2个命令,就像你只是在终端输入它一样。

所以喜欢

cd /Users/nameOfUser/Desktop/someFolder/someSubFolder

然后我要在该目录中执行另一个命令。目前我这样做:

Process navigate = Runtime.getRuntime().exec("cd /Users/nameOfUser/Desktop/someFolder/someSubFolder");
Process doSomething = Runtime.getRuntime().exec("commandInThatDirectory");

哪个不起作用,它不会抛出异常,但第二个进程似乎不会发生在它之前指定的目录中。我是流程和运行时的新手所以请耐心等待:P。

他们是一种在同一个终端实例中重新执行命令的方法,或者至少是1个命令的格式,您可以在其中指定另一个命令的目录吗?我是linux用户,所以我不太清楚mac终端很抱歉。

1 个答案:

答案 0 :(得分:1)

可以这样做。您可以通过在命令之间放置分号来运行任何命令。

public class Main {
public static void main(String[] args) throws IOException {

        ProcessBuilder pb1 = new ProcessBuilder(
                "bash",
                "-c",
                "cd /Users/nameOfUser/Desktop/someFolder/someSubFolder;commandInThatDirectory");
        pb1.redirectErrorStream(true);
        Process p = pb1.start();
    }
}