#command #runner #cross-platform #system #interactive

command_runner

一个用于运行系统命令的库

5 个版本

0.1.4 2024 年 6 月 28 日
0.1.3 2024 年 6 月 28 日
0.1.2 2024 年 6 月 28 日
0.1.1 2024 年 6 月 28 日
0.1.0 2024 年 6 月 28 日

#346命令行界面

每月 40 次下载

MIT/Apache

13KB
191

command_runner

command_runner 是一个跨平台的 Rust crate,专为交互式执行终端命令而设计。它将各种功能封装在一个结构体中以提供无缝的命令执行体验。

主要功能

  1. 执行命令行指令:在您的 Rust 应用程序中运行任何命令行指令。
  2. 检查命令执行状态:确定命令是否成功执行。
  3. 获取命令输出:检索命令的实时输出,类似于您在终端中看到的内容。
  4. 处理用户输入:如果正在运行的命令需要用户输入,该 crate 提供了一种在捕获命令输出同时轻松输入数据的方法。
  5. 跨平台兼容性:在不同平台之间无缝工作,包括 Linux、macOS、Windows 以及 Android 等移动平台。

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
command_runner = "*"

使用示例

use anyhow::Result;
use command_runner::CommandRunner;

fn main() -> Result<()> {
    let mut runner = CommandRunner::new("echo Hello, World!", 1024)?;
    // Check if the command was executed successfully
    if runner.get_status() == CommandStatus::Terminated {
        println!("Command executed successfully!");
    }
    // Get the command output
    while let Some(output) = runner.get_output() {
        println!("Command output: {}", output);
    }
    // Handle user input
    runner.execute("read -p 'Enter your name: ' name && echo \"Hello, $name\"")?;
    runner.provide_input("John Doe\n")?;
    // Get the final output
    while let Some(final_output) = runner.get_output() {
        println!("Final output: {}", final_output);
    }

    Ok(())
}

文档

有关更详细的用法说明和 API 文档,请访问 docs.rs

贡献

我们欢迎问题和拉取请求。对于重大更改,请首先打开一个问题以讨论您想更改的内容。

许可

此 crate 可在以下任一许可证下使用

选择最适合您需求的许可证。

依赖

~3.5MB
~121K SLoC