2015-07-28 15 views
5

Chcę wykonać polecenie powłoki w Rdza. W Pythonie mogę to zrobić:Wykonaj polecenie powłoki

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

Ale Rust ma tylko std::process::Command. Jak mogę wykonać polecenie powłoki, takie jak cd xxx && touch abc.txt?

Odpowiedz

6

Powinieneś naprawdę uniknąć system. To, co robi, zależy od używanej powłoki i systemu operacyjnego, na którym się znajdujesz (twój przykład prawie na pewno nie spełni twoich oczekiwań w systemie Windows).

Jeśli naprawdę, rozpaczliwie potrzeba powołać niektóre polecenia z powłoki, można zrobić marginalnie lepiej po prostu wykonanie powłoki bezpośrednio (jak za pomocą przełącznika -c dla bash).

Jeśli z jakiegoś powodu nie jest możliwe przede i można gwarancję program będzie tylko bieg na systemach, w których powłoka w pytaniu jest dostępny i użytkowników nie być uruchomiony cokolwiek innego ...

... wtedy można po prostu użyć połączenia system z libc tak samo jak ze zwykłej C. liczy się jako FFI, więc prawdopodobnie będziesz chciał patrzeć na std::ffi::CStr.

+0

Dziękuję bardzo! –

Powiązane problemy