There are many cases where bash/shell is better than Python. For one, any time you’re just stringing together 2-4 existing shell tools, bash has unbeatable speed since it’s all running in C. Plus, you should probably learn the tools anyways to handle CLI stuff on a day-to-day level, so the knowledge is reusable and becomes very intuitive to compose into some crazy one-liner piped chains of commands. If I just want to loop over a set of directories and do a couple chained CLI commands on each directory, this is the way I go.
That said, in cases where you’re doing something very custom, any time you’re doing something that can’t be simply described as a chain of CLI tool transformations, and any time you want to maintain a global state across a complex set of operations outside of a pipeline, I agree that Python is generally a more robust solution with much easier maintainability.
If we’re talking about 5 like script, then sure. Just use bash. But python is much better long term, in my experience, for scripts any bigger than that.
Not really true. Python was created for, and is still best used for data science. It’s user-friendliness made it a first for many inexperienced programmers too, and it started to be used for way more than it was initially intended. I’m not saying it’s bad at everything else, but there’s most certainly better tools for the job.
I won’t argue with what it was created for, but I disagree that it’s best usecase isn’t as a bash replacement. That’s the only spot I’ve used and liked it.
Things that could have been done in bash is python’s best usecase. And bash sucks for scripting. Why not python?
There are many cases where bash/shell is better than Python. For one, any time you’re just stringing together 2-4 existing shell tools, bash has unbeatable speed since it’s all running in C. Plus, you should probably learn the tools anyways to handle CLI stuff on a day-to-day level, so the knowledge is reusable and becomes very intuitive to compose into some crazy one-liner piped chains of commands. If I just want to loop over a set of directories and do a couple chained CLI commands on each directory, this is the way I go.
That said, in cases where you’re doing something very custom, any time you’re doing something that can’t be simply described as a chain of CLI tool transformations, and any time you want to maintain a global state across a complex set of operations outside of a pipeline, I agree that Python is generally a more robust solution with much easier maintainability.
Why not something that is completely redesigned from the ground up:
That looks really elegant. I think I’m gonna give it a try. Thanks a lot for the recommendation!
have you ever tried to recreate a simple shell pipeline in Python
If we’re talking about 5 like script, then sure. Just use bash. But python is much better long term, in my experience, for scripts any bigger than that.
Xonsh
Not really true. Python was created for, and is still best used for data science. It’s user-friendliness made it a first for many inexperienced programmers too, and it started to be used for way more than it was initially intended. I’m not saying it’s bad at everything else, but there’s most certainly better tools for the job.
I won’t argue with what it was created for, but I disagree that it’s best usecase isn’t as a bash replacement. That’s the only spot I’ve used and liked it.