Yeah it’s great for little scripts. There’s even a cargo script feature that’s being worked on so you can compile & run them using a shebang.
I’d use a shell script if it is literally just a list of commands with no control logic or piping. Anything more than that and you’re pointing a loaded gun at your face, and should switch to a proper language, of which Rust is a great choice.
Honestly yes. If I need to manipulate the filesystem or manage processes with any amount of conditional logic or looping, I’d much rather do it with Rust than shell scripts.
The only thing I use shell scripts for anymore is completely trivial sequences of commands.
One of the simplest tricks is that you can throw down a function, which you can call with a command like e.g. this: run("cat /etc/os-release | grep NAME")
by constructing a Command like so:
Command::new("sh")
.arg("-c")
.arg(command) //the string passed as parameter
There’s proper libraries to make running commands even easier and more robust, but if you don’t want to pull in a library, that’s really easy to write out ad-hoc and gets you 95% of the way there, with shell piping and everything.
WHAT
Yeah it’s great for little scripts. There’s even a
cargo scriptfeature that’s being worked on so you can compile & run them using a shebang.I’d use a shell script if it is literally just a list of commands with no control logic or piping. Anything more than that and you’re pointing a loaded gun at your face, and should switch to a proper language, of which Rust is a great choice.
Honestly yes. If I need to manipulate the filesystem or manage processes with any amount of conditional logic or looping, I’d much rather do it with Rust than shell scripts.
The only thing I use shell scripts for anymore is completely trivial sequences of commands.
As someone who uses a lot of shell scripts and learning Rust, do tell more.
One of the simplest tricks is that you can throw down a function, which you can call with a command like e.g. this:
run("cat /etc/os-release | grep NAME")by constructing a Command like so:
Command::new("sh") .arg("-c") .arg(command) //the string passed as parameterThere’s proper libraries to make running commands even easier and more robust, but if you don’t want to pull in a library, that’s really easy to write out ad-hoc and gets you 95% of the way there, with shell piping and everything.