2015-07-28 17 views
5

Tôi muốn thực hiện lệnh shell trong Rust. Trong Python tôi có thể làm điều này:Thực hiện lệnh shell

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

Nhưng Rust chỉ có std::process::Command. Làm thế nào tôi có thể thực thi lệnh shell như cd xxx && touch abc.txt?

Trả lời

6

Bạn nên thực sự tránh system. Những gì nó phụ thuộc vào những gì vỏ được sử dụng và hệ điều hành bạn đang ở trên (ví dụ của bạn gần như chắc chắn sẽ không làm những gì bạn mong đợi trên Windows).

Nếu bạn thực sự, một cách tuyệt vọng cần để gọi một số lệnh với một vỏ, bạn có thể làm nhẹ tốt hơn bằng cách chỉ thực hiện shell trực tiếp (như sử dụng -c switch cho bash).

Nếu vì một lý do nào, ở trên là không khả thi bạn có thể đảm bảo chương trình của bạn sẽ chỉ chạy trên các hệ thống mà vỏ trong câu hỏi có sẵn người dùng sẽ không được chạy bất cứ điều gì khác ...

... thì bạn chỉ có thể sử dụng cuộc gọi system từ libc giống như bạn thường làm C. Số này được tính là FFI, vì vậy bạn có thể muốn xem std::ffi::CStr.

+0

Cảm ơn bạn rất nhiều! –

Các vấn đề liên quan