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

Back to back commands in mac terminal via java Runtime

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

很喜欢

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 终端,抱歉。

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

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();
    }
}