Wie führe ich einen Systembefehl aus und erfasse seine Ausgabe in Rust?
Hallo Kollegen!
Ich habe angefangen, Rust zu lernen, und schreibe ein kleines Tool zur Automatisierung. Ich muss einen externen Systembefehl (z.B. `ls -la` oder `git status`) ausführen und seine Ausgabe (stdout und stderr) direkt im Programm lesen, um dann die Zeilen zu verarbeiten.
Ich habe mir die Dokumentation zum Modul `std::process::Command` angesehen, aber ich bekomme es nicht richtig hin, die Ausgabe zu erfassen. Hier ist, was ich versucht habe:
```rust
use std::process::Command;
fn main() {
let output = Command::new("ls")
.arg("-la")
.output()
.expect("Fehler beim Ausführen des Befehls");
println!("stdout: {}", output.stdout);
println!("stderr: {}", output.stderr);
}
```
Aber in der Konsole wird so etwas wie `stdout: [115, 111, 109, 101, 32, 116, 101, 120, 116]` ausgegeben – das sind Bytes, kein String! Wie bekomme ich lesbaren Text? Und was mache ich, wenn der Befehl mit einem Fehler enden kann? Ich möchte verstehen, wie man den Exit-Status richtig behandelt und wie man stderr separat erfasst.
Vielen Dank im Voraus für die Hilfe!