gpt4 book ai didi

java - 如何使用 Java 运行带有通配符的 unix/shell 命令?

转载 作者:行者123 更新时间:2023-11-30 06:29:08 25 4
gpt4 key购买 nike

我想在 Java 中运行一些 unix/shell 命令并处理输出。我使用了 getRuntime.exec(),但它没有为 ls directory_path/*.tar.gz 等命令提供正确的输出。对于该命令,我的程序没有给出任何输出,但给出了错误提示 No such file or directory。但是相同的命令在命令提示符下给出了正确的输出。

有没有其他方法可以在 Java 中执行包含通配符的命令?

最佳答案

Is there any other way to execute commands which include wildcards in Java?

是的。

您的代码中存在三个潜在问题:

  1. 假设您想查看外部命令的输出,您需要处理它产生的输出,并自行打印。

    按照我在此处提供的示例进行操作:

  2. 如果您天真地通过 Runtime.exec* 的 shell 扩展将不起作用。您必须通过 /bin/bash 明确。

  3. 如果您尝试列出 directory_path/*.tar.gz 的内容,您应该知道(如果您不是以 / 开头) directory_path 将相对于当前工作目录 进行解析。首先尝试给出绝对路径以确保它可以正常工作,然后再尝试找出为什么找不到相对路径。

这是一个完整的示例,应该可以正常工作:

Process proc = new ProcessBuilder("/bin/bash", "-c",
"ls /.../directory_path/*.tar.gz").start();

Reader reader = new InputStreamReader(proc.getInputStream());
int ch;
while ((ch = reader.read()) != -1)
System.out.print((char) ch);
reader.close();

关于java - 如何使用 Java 运行带有通配符的 unix/shell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11790240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com