gpt4 book ai didi

Java 执行 Linux 命令

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:32 25 4
gpt4 key购买 nike

我想编写一个执行某些 Linux 命令的 java 代码:

String cmd = "cd /home/arps/FBI" ;

Process p=Runtime.getRuntime().exec(cmd);


String [] arr = new String [9] ;
arr[0] = "cd /home/arps/FBI" ;
for(int n = 1 ; n < 9 ; n++){
String command = "mv" + " " + "/home/arps/FBI/hr" + n + ".txt" + " " + "/home/arps/FBI/hrs" + n +".txt" ;
arr[n] = command ;
}


Process pp=Runtime.getRuntime().exec(arr);

在上面的代码中:我尝试将名为 hr1、hr2 .... 的 8 个文件重命名为 hrs1 、hrs2 ... 等。在 cd 命令中,我尝试输入所需的目录。但是,我也使用了绝对路径。但是代码出错了:

java.io.IOException: Cannot run program "cd": java.io.IOException: error=2, No such file or directory

java.io.IOException: Cannot run program "mv /home/arps/FBI/hr1.txt /home/arps/FBI/hrs1.txt": java.io.IOException: error=2, No such file or directory

虽然我手动执行这些命令意味着 "mv/home/arps/FBI/hr1.txt/home/arps/FBI/hrs1.txt" 并执行合适吗?

最佳答案

cd 是当前 shell 的内置命令 - 你不能执行它 - 它是内置的 shell,因为 cwd 是进程级设置,所以一个新进程有它自己的值(value)。有 no way从 java 进程中更改 cwd。

array argument version exec 用于执行单个命令,您自己在其中拆分了参数,而不是用于执行多个命令。

因此您要么需要提供完整路径,要么自己用 Java 实现副本。

关于Java 执行 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11207096/

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