当前位置: 首页 > 面试题库 >

如何使用Java使用通配符运行Unix / Shell命令?

颜志学
2023-03-14
问题内容

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

还有其他方法可以执行包含Java通配符的命令吗?


问题答案:

还有其他方法可以执行包含Java通配符的命令吗?

就在这里。

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

  1. 假设您想查看外部命令的输出,则需要照顾它产生的输出并自己打印。

请遵循我在此处提供的示例:

* [如何使一个Java程序同时打印out.println()和err.println()语句?](https://stackoverflow.com/questions/3754841/how-to-make-a-java-program-to-print-both-out-println-and-err-println-)
  1. *如果您天真地通过,则shell扩展将不起作用Runtime.exec。您必须/bin/bash显式地进行。

  2. 如果您尝试列出内容,则directory_path/*.tar.gz应该知道(如果不是以a开头/),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();


 类似资料:
  • 我正在尝试编写一个脚本,如果文件中不存在特定字符串,它将执行某些操作。 我知道为了检查string是否可用,我们可以做如下操作: 但是如何将运算符与shell命令相结合?

  • 问题内容: 我有一种情况想要在Python中执行以下shell命令并获取输出, 我可以使用此python代码在python中执行上述shell命令, 但是,由于我 不想使用“ shell = True”选项 ,因此我尝试了以下python代码, 我想知道为什么我参考网页中的描述时输出为“ None”:http : //docs.python.org/library/subprocess.html#

  • 问题内容: 从Java运行Unix命令非常简单。 但是可以从Java代码运行Unix Shell脚本吗?如果是,从Java代码中运行Shell脚本是一个好习惯吗? 问题答案: 你应该真正看一下Process Builder。它确实是为这种事情而构建的。

  • 当我在终端中点击curl代码时,我得到了200,所以我假设我编写testStytch的方式到目前为止还可以。但是,一旦我试图集成到java文件中,我就会收到错误的请求响应。我现在有点不知所措。https://github.com/libetl/curl这就是我所说的转换curl代码。 这是我得到的错误。https响应代理{HTTP/1.1 400错误请求[日期:星期四,2021 23:21:424

  • 需要明确的是:这个问题不是关于如何像commons CLI/JCommando等那样解析程序的参数。 我想用Java编写Unix命令。虽然我不想自己写大部分东西,但我打算使用图书馆,并寻求您的帮助。 我找到了用于解析参数的commons cli,比如getopt。然而,我正在寻找一个类似Perl的diamond运算符或Python的fileinput库的最后一个库。 unix命令(或我来自Linu