通过 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();
}
}
基本上我有 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();
}
}