繁体   English   中英

java如何执行终端命令?

[英]How does java execute terminal commands?

发现这很棘手; 具有以下代码:

String cmd = "find /home/folder/ -type f"; 
Runtime run = Runtime.getRuntime() ; 
Process pr = run.exec(cmd); 
pr.waitFor();

我会pr.getInputStream()并在那里find正确的结果,没问题。 但是,如果我想更具体一点,并且我的命令为cmd = "find /home/folder/ -type f -name somefile*"; ,输入 stream 将为空。

现在,我认为这与交互式 shell 完成的字符串扩展有关(我想在这种情况下不会使用)。 在这种情况下, *将没有任何意义,并且find将寻找真正名为 "*" 的文件(类似于\* )。 所以我试图让我的命令为sh -c "find /home/folder/ -type f -name somefile*" 但它也没有工作......

我错过了什么?

谢谢,

F。

Ps.:是AIX盒子,配IBM的Java JVM。

使用find时,我总是转义通配符:

cmd = "find /home/folder/ -type f -name somefile\\*";

我认为如果您使用 ProcessBuilder 或 Runtime.exec 方法会更好,因为它们不需要 shell escaping 并且不要运行 Z2591C98B70119FE624898B1E424B5E91。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM