【问题标题】:Back to back commands in mac terminal via java Runtime通过 java Runtime 在 mac 终端中的背靠背命令
【发布时间】:2016-07-12 15:35:23
【问题描述】:

基本上,我有 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终端不太了解抱歉。

【问题讨论】:

    标签: java process terminal runtime


    【解决方案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();
        }
    }
    

    【讨论】:

    • 谢谢,“-c”是干什么用的?我知道 bash 告诉它打开/使用终端,但是那个 c 部分有什么作用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多