Cómo ejecutar un comando del sistema y capturar su salida en Rust
¡Hola, colegas!
Empecé a aprender Rust y estoy escribiendo una pequeña herramienta de automatización. Necesito ejecutar un comando externo del sistema (por ejemplo, `ls -la` o `git status`) y leer su salida (stdout y stderr) directamente en el programa para luego procesar las líneas.
Miré la documentación del módulo `std::process::Command`, pero no logro capturar la salida correctamente. Esto es lo que intenté:
```rust
use std::process::Command;
fn main() {
let output = Command::new("ls")
.arg("-la")
.output()
.expect("No se pudo ejecutar el comando");
println!("stdout: {}", output.stdout);
println!("stderr: {}", output.stderr);
}
```
Pero en la consola se muestra algo como `stdout: [115, 111, 109, 101, 32, 116, 101, 120, 116]` — ¡son bytes, no una cadena! ¿Cómo obtengo texto legible? ¿Y qué hago si el comando puede fallar? Quiero entender cómo manejar correctamente el estado de salida y cómo capturar stderr por separado.
¡Gracias de antemano por la ayuda!