使用管道和重定向從Java 執行Linux Shell 指令
當嘗試從Java 與Linux 系統互動時,開發人員經常面臨以下挑戰:使用重定向和管道等高級功能執行shell 命令。了解透過 Java 呼叫 shell 命令的細微差別對於完成此類任務至關重要。
Runtime.exec() 是 Java 中執行 shell 指令的常用方法。然而,它無法建立適當的 shell 環境,限制了它與重定向和管道的兼容性。相反,首選方法是使用 shell 解釋器建立一個新進程,並將命令作為參數傳遞。
考慮以下修改後的程式碼:
Process p = Runtime.getRuntime().exec(new String[]{"csh", "-c", "cat /home/narek/pk.txt"});
這裡,「csh」解釋器使用「-c」選項啟動,這允許它執行指定的命令,就像直接輸入到csh shell 中一樣。這種方法有效地建立了一個 shell 環境,可以根據需要使用重定向和管道。
如果您的系統沒有安裝 csh,您可以用 bash 取代它,如下所示:
Process p = Runtime.getRuntime().exec(new String[]{"bash", "-c", "ls /home/XXX"});
以上是如何使用 Java 中的管道和重定向執行 Linux Shell 命令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!