String command = "mycommand &> mycommand.log";
Process.getRuntime().exec(command);
我无法使用 Process.getInputStream()
,因为此命令旨在由另一个 Java 进程执行,并且它们的 Java 实现对用户隐藏,因此重定向必须在命令内进行,而不是使用 Java API。
当您在 Java 中运行命令
&> xx
传递给
echo
。您可以通过以下方式确认:
var p = Runtime.getRuntime().exec("/usr/bin/echo &> xx.log");
p.getInputStream().transferTo(System.out);
// PRINTS: "&> xx"
要进行 shell 重定向,您需要启动 shell:var p = new ProcessBuilder("/bin/bash", "-c", "/usr/bin/echo &> xx.log").redirectErrorStream(true).start();
p.getInputStream().transferTo(System.out);
// DOES NOT PRINT ANYTHING
而是创建一个文件:
xx.log