我正在使用ProcessBuilder来执行Java中的bash命令,所以我实现了这个以字符串形式处理命令的简单方法:它打印bash命令输出(System.out.println(line);
),它是甚至作为结果返回
public String exec(String command) {
String line, output = "";
try {
ProcessBuilder builder = new ProcessBuilder(command.split(" "));
Process process = builder.start();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = br.readLine()) != null) {
System.out.println(line);
output += line + "\n";
}
} catch (IOException e) { e.printStackTrace(); }
return output;
}
使用ls
或ls -l
这样的简单命令,我获得了输出结果,但如果我使用locate -br '^target$'
(其目的是解释here),我什么都得不到。
我在Unix命令或ProcessBuilder中是否缺少某些内容?为什么不打印locate
命令的输出?
(显然我在我的终端尝试了这个命令,它可以在那里工作)