首頁  >  文章  >  Java  >  如何從 Java 執行帶有重定向和管道的 Linux Shell 命令?

如何從 Java 執行帶有重定向和管道的 Linux Shell 命令?

DDD
DDD原創
2024-11-23 13:34:09817瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn