#shell #command #run-command #cmd #sh

系统

跨平台 crate,用于轻松运行 shell 命令,类似于 C 系统函数

7 个版本

0.3.3 2024 年 3 月 18 日
0.3.2 2024 年 3 月 18 日
0.2.1 2024 年 3 月 17 日
0.1.0 2024 年 3 月 17 日

12#sh

每月 下载 38
btd 中使用

MIT 许可证

7KB

系统

跨平台 crate,用于轻松运行 shell 命令,类似于 C system 函数。

用法

systemsystem_output

对于只需要系统命令结果的简单用例,可以使用 systemsystem_output 函数。

system 继承自父进程的 stdout、stderr 和 stdin,而 system_output 捕获 stdout 和 stderr,不继承 stdin。

system 的使用示例,

use system::system;

fn main() {
    // Prints "Hello, world!"
    system("echo Hello, world!").expect("Failed to run command.");
}

system_output 的使用示例,

use system::system_output;

fn main() {
    let out = system_output("echo Hello, world!").expect("Failed to run command.");
    let stdout = String::from_utf8_lossy(&out.stdout);

    #[cfg(target_os = "windows")]
    assert_eq!(stdout, "Hello, world!\r\n");

    #[cfg(not(target_os = "windows"))]
    assert_eq!(stdout, "Hello, world!\n");
}

std::process::Command::系统

对于更复杂的用例,在运行命令之前需要修改底层 Command,为 Command 实现了 system::System trait。

该 trait 添加了 Command::system 函数,以创建执行 shell 命令的 Command

例如,

use std::process::Command;

use system::System;

fn test() {
    let out = Command::system("echo Hello, world!")
        .output()
        .expect("Failed to run command.");
    let stdout = String::from_utf8_lossy(&out.stdout);

    #[cfg(target_os = "windows")]
    assert_eq!(stdout, "Hello, world!\r\n");

    #[cfg(not(target_os = "windows"))]
    assert_eq!(stdout, "Hello, world!\n");
}

无运行时依赖