2015-07-28 29 views
5

Ich möchte einen Shell-Befehl in Rust ausführen. In Python Ich kann dies tun:Einen Shell-Befehl ausführen

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

Aber Rust hat nur std::process::Command. Wie kann ich einen Shell-Befehl wie cd xxx && touch abc.txt ausführen?

Antwort

6

Sie sollten wirklich vermeiden system. Was es tut, hängt davon ab, welche Shell verwendet wird und welches Betriebssystem Sie verwenden (Ihr Beispiel wird mit ziemlicher Sicherheit nicht das tun, was Sie von Windows erwarten).

Wenn Sie wirklich verzweifelt Notwendigkeit einige Befehle mit einer Shell aufrufen, können Sie geringfügig besser zu tun, indem nur direkt die Shell ausführen (wie mit dem -c Schalter für bash).

Wenn aus irgendeinem Grund die oben nicht möglich ist und Sie können Garantie Ihr Programm nur laufen auf Systemen, bei denen die Schale in Frage vorhanden ist und Benutzer wird nicht laufen alles andere ...

... dann können Sie den system Anruf von libc benutzen Sie einfach so wie man es von normalen C. Dies gilt als FFI, so dass Sie wahrscheinlich auf std::ffi::CStr aussehen werden soll.

+0

Vielen Dank! –

Verwandte Themen