我正在尝试在Java程序中打印我的mac的[edit:Apple computer]序列号。我熟悉Unix命令
ioreg -l | awk '/IOPlatformSerialNumber/ { print $4;}'
在终端中完成此任务。
当我尝试
String command = "ioreg -l | awk '/IOPlatformSerialNumber/ { print $4; }'"
Runtime terminal = Runtime.getRuntime();
String input = new BufferedReader(
new InputStreamReader(
terminal.exec(commands).getInputStream())).readLine();
System.out.println(new BufferedReader(
new InputStreamReader(
terminal.exec(command, args).getInputStream())).readLine());
我的序列号未打印。而是打印:
<+-o Root class IORegistryEntry, id 0x100000100, retain 10>
我认为问题是这terminal.exec()
并不意味着要使用整个命令字符串。Java中是否有类似于shell = Truepython中的参数的东西Popen(command, stdout=PIPE, shell=True)
,可以让我传递整个命令字符串?
我看到两种可能性:
解析ioreg -l
使用Scanner的输出。
将命令包装在shell脚本中,exec()
然后执行以下操作:
#!/ bin / sh
ioreg -l | awk'/ IOPlatformSerialNumber / {打印$ 4;}'
附录:作为使用的示例ProcessBuilder
,并结合了Paul Cager的有用建议,这是第三个替代方法:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class PBTest {
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder("bash", "-c",
"ioreg -l | awk '/IOPlatformSerialNumber/ { print $4;}'");
pb.redirectErrorStream(true);
try {
Process p = pb.start();
String s;
// read from the process's combined stdout & stderr
BufferedReader stdout = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((s = stdout.readLine()) != null) {
System.out.println(s);
}
System.out.println("Exit value: " + p.waitFor());
p.getInputStream().close();
p.getOutputStream().close();
p.getErrorStream().close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
问题内容: 如何清除使用Java在命令行中打印的文本?我想在打印后清除并用覆盖。我搜索并找到此代码,但是它不起作用。 问题答案: 您可以通过打印来做到这一点: 注意,这在Eclipse Console中 不起作用。
需要明确的是:这个问题不是关于如何像commons CLI/JCommando等那样解析程序的参数。 我想用Java编写Unix命令。虽然我不想自己写大部分东西,但我打算使用图书馆,并寻求您的帮助。 我找到了用于解析参数的commons cli,比如getopt。然而,我正在寻找一个类似Perl的diamond运算符或Python的fileinput库的最后一个库。 unix命令(或我来自Linu
我正在尝试将打印机作业语言命令发送到HP 4515打印机。但是,打印机不会打印任何内容。下面是我的代码。打印机位于远程,我只能请那里的人检查是否打印出了任何内容。不幸的是,没有打印出任何内容。PJL命令的格式是否不好?如何使用Java获取作业状态 打印机的纸张设置:
当在下面运行时,将打开代码提示符,并显示java版本信息。我想打印java版本信息。请帮帮我
在我的项目中,客户需要使用POS打印机打印收据,这可以使用JAVA POS来完成。我在网上搜索没有任何有用的材料,但发现 1.javapos 2.jpos 可以有人请指导我应该进行JAVA POS或JPOS。 该应用程序基于Java Swing desktop而不是基于web。 真的坚持这一点,任何帮助都是非常有用的
我正在使用DHL Shipping(XML)API请求DHL发货并自动打印响应的发货标签。 系统是这样工作的: DHL响应XML包含base64编码的pdf,其中包含: 第1页。装运标签(打印在包装上的标签上) 第2页。存档文件(需要单独打印并交给快递员) 为了分离这两个PDF,我首先解码base64,然后使用PDFBox命令行工具执行PDFSplit,最后在各自的打印机上打印各自的文档: 问题是