我正在尝试使用rust运行一个较长的命令:
rsync -avL --progress -e 'ssh -i ~/path/to/mypem.pem' ../directory/src/file.js user@computer:~/data/school
我试图这样做:
use std::process::Command;
let output = Command::new("rsync").args(&["-avL", "--progress", "-e", "'ssh", "-i", "~/path/to/mypem.pem'", "../directory/src/file.js", "user@computer:~/data/school"]).output().expect("BAD");
if !output.status.success() {
let s = String::from_utf8_lossy(&output.stderr);
print!("rustc failed and stderr was:\n{}", s);
}
println!("{}", String::from_utf8_lossy(&output.stdout));
这似乎根本不起作用。它给了我这个错误:
在远程外壳命令中缺少尾随-”。
rsync错误:语法或用法错误_
对于在这里做错的任何事情,我将非常感谢。我已经检查了docs中的Command
答案 0 :(得分:4)
从rsync命令的角度来看,该位:
ssh -i ~/path/to/mypem.pem
是一个参数,因此您不应将其拆分为多个参数。
尝试一下:
let output = Command::new("rsync").args(&["-avL", "--progress", "-e", "ssh -i ~/path/to/mypem.pem", "../directory/src/file.js", "user@computer:~/data/school"]).output().expect("BAD");