我想在Rust中执行一个shell命令.在Python中,我可以做到:

import os
cmd = r'echo "test" >> ~/test.txt'
os.system(cmd)

但 rust 只有std::process::Command个.如何执行cd xxx && touch abc.txt这样的shell命令?

推荐答案

你应该避免system.它的功能取决于使用的是什么shell以及您使用的是什么操作系统(您的示例几乎肯定不会达到您在Windows上期望的效果).

如果你真的想用一个shell调用一些命令,那么直接执行shell(比如使用bash的-cswitch )就可以做得更好.

如果,由于某种原因,上述方法不可行,那么你可以guarantee你的程序将在有问题的shell可用的系统上运行,and个用户will not将运行其他任何东西...

...然后你可以像普通C一样使用libcsystem个电话.这算作FFI,所以你可能想看看std::ffi::CStr.

Rust相关问答推荐

重新导出proc宏导致未解决的extern crate错误""

Tauri tauri—apps/plugin—store + zustand

常量泛型和类型枚举箱有重叠的用途吗?

将大小为零的类型实例存储到空指针中

如何将`Join_all``Vec<;Result<;Vec<;Foo&>;,Anywhere::Error&>;`合并到`Result<;Vec<;Foo&>;,Anywhere::Error&>;`

获取字符串切片(&;str)上的切片([ia..ib])返回字符串

有没有办法指定只在Rust的测试中有效的断言?

使用极点数据帧时,找不到枚举结果的方法lazy()

是否提供Bundle 在可执行文件中的warp中的静态文件?

Rust wasm 中的 Closure::new 和 Closure::wrap 有什么区别

具有多个键的 HashMap

如何以与平台无关的方式将OsString转换为utf-8编码的字符串?

Option<&T> 如何实现复制

Rust 编译器不统一在 if let 表达式的分支中都 impl Future 的类型

使用 lalrpop 在 rust 中解析由 " 引用的字符串

为什么 `tokio::join!` 宏不需要 Rust 中的 `await` 关键字?

如何展平以下嵌套的 if let 和 if 语句?

Rust 中 `Option` 的内存开销不是常量

为什么我可以同时传递可变和不可变引用?

Rust 跨同一文件夹中文件的可见性