首页 > Java > java教程 > 如何从 Java 执行带有重定向和管道的 Linux Shell 命令?

如何从 Java 执行带有重定向和管道的 Linux Shell 命令?

DDD
发布: 2024-11-23 13:34:09
原创
848 人浏览过

How Can I Execute Linux Shell Commands with Redirections and Pipes from Java?

从 Java 调用 Linux Shell 命令:详细说明

当尝试从 Java 中执行 Linux 命令时,了解以下内容至关重要: shell 特定命令的细微差别及其与 Java 运行时的兼容性

挑战:使用重定向和管道执行命令

使用 Process p = Runtime.getRuntime().exec("shell command") 的初始尝试失败处理重定向或管道。这是因为 exec() 不直接与系统 shell 集成。

解决方案:利用 Shell“代理”

通过重定向和管道执行 shell 命令,您可以利用“外壳代理”方法。这涉及指定要用作中间步骤的 shell。

实现:

将 exec() 替换为以下内容:

Process p = Runtime.getRuntime().exec(new String[]{"csh", "-c", "cat /home/narek/pk.txt"});
登录后复制

中在此示例中,“csh”是用于解释命令“cat”的 shell 代理/home/narek/pk.txt"。

附加说明:

如果您在使用 csh 时遇到问题,请考虑使用 bash 作为 shell 代理:

Process p = Runtime.getRuntime().exec(new String[]{"bash", "-c", "ls /home/XXX"});
登录后复制

以上是如何从 Java 执行带有重定向和管道的 Linux Shell 命令?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板