java - 通过 java Runtime 在 mac 终端中执行背对背命令

标签 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。

它们是一种在同一终端实例中连续执行命令的方法,还是至少是一个命令的格式,您可以在其中指定另一个命令执行的目录?我是一名 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();
    }
}

关于java - 通过 java Runtime 在 mac 终端中执行背对背命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36210454/

相关文章:

java - 如何使用 Java 启动 Windows `runas` 进程?

c# - 如何在 Windows 中使用 C# 检测进程开始和结束?

java - TreeSet 和 equals 函数

java - 为固定宽度的长句调整对话框消息 (JOptionPane) 的大小

java - 用 Java 进行编程的最有效方法

java - 如何实现使用模板的界面?

有人可以解释一下 C 中 signal() 语法的含义吗?

linux - 在 Linux 中为多个文件运行可执行终端程序以生成多个输出文件

docker - 在Mac OS X上通过 `-it`命令提取图像后如何进入docker容器?

linux - 如何在启动时运行终端命令