1 point
*

I can’t think of a single reason to use bash over Python. Anything you can do in bash can be done in pure Python. Unless you’re working in some embedded environment it’s a non-issue to install a Python interpreter (you certainly already have one). I would only use sh/bash for packages I’m distributing to avoid the external dependency, and then only if it’s a relatively simple script.

permalink
report
reply
6 points

Python is superior for string anything (parsing, searching, manipulating). But Bash is much simpler for running existing CLI tools. Plus you should already be using Bash as a simple terminal language already, so wrapping what you’re used to into a simple script flows naturally.

Eg, if I have some admin tool for updating a user thingamajig, a common scripting need is just running that tool for every user in a file (or the output of another command). The string manipulation that often requires is annoying in bash, but running the commands is easier than Python.

permalink
report
parent
reply
2 points

If what you’re doing is essentially a few shell commands, then you may as well put it into a script. If you’re talking about how “elegant” your shell scripts are and comparing them to Python, you’re probably wrong and should be using Python.

permalink
report
parent
reply
18 points

Bash is much better for doing file operations and piping the output across multiple commands

permalink
report
parent
reply
-1 points

Better than subprocess.getoutput?

permalink
report
parent
reply
9 points

Why is always about bash? POSIX shell scripts run everywhere.

permalink
report
parent
reply
2 points

Granted, it’s a kind of niche use case but in the embedded world there’s usually size constraints which prevents a full blown bash installation.

However, things are better now than 20 years ago. Flash is cheap.

permalink
report
parent
reply
3 points

BASH has some useful features and I’ve literally never had an environment with bash unavailable (even if a package is needed, so what).

permalink
report
parent
reply
1 point

MacOS ships only 3.something version, which has some compatibility issues with Bash 4+.

permalink
report
parent
reply
19 points

I know whatever environment I run my shell script in has sh, I can’t rely on (the right version of) python being there.

permalink
report
parent
reply
-6 points

Why not?

permalink
report
parent
reply
6 points

Because you could be on another machine that doesn’t have Python 3.X it only has 3.X-1. or you could write code for Python 3.12 and then four years later no one has 3.12 anymore.

Sometimes you need to download packages from pip but pip might not be available or you may be hitting your company’s internal pip mirror.

permalink
report
parent
reply
14 points

i would not run a python script with root.

permalink
report
parent
reply
0 points

i run my daily NAS backup python script with root.

permalink
report
parent
reply
2 points

It is fine, just should be more careful with modules used.

permalink
report
parent
reply
5 points

That’s fair.

permalink
report
parent
reply
1 point

Python is never the right answer!

permalink
report
reply
4 points

what is a well-known genus of non-venomous snake ?

permalink
report
parent
reply
2 points

Anaconda!

Wait…

permalink
report
parent
reply
2 points

This isn’t jeopardy! 🤣

permalink
report
parent
reply
1 point

lol

permalink
report
parent
reply
1 point

I know there’s a lot of downvotes because there are people reading this as hate toward Python. On one hand, one can make the case that it is overused and this doesn’t bold well for those that simply can never like it’s syntax. On the other hand, Python is perfect for small scripts that isn’t tailored for a Domain or just quick codes.

permalink
report
parent
reply
3 points

Honestly, I’m not really a fan of the formatting and syntax of Python but I agree, it is a fine choice for scripting things quickly if you don’t mind the language itself.

The biggest issue I have with it are all the incompatible versions, juggling modules, having some other random thing with a ridiculous configuration, where a bash script would be infinitely easier. Anything more complicated and Python is just too much of a headache.

permalink
report
parent
reply
37 points

Python is the second best language for everything. Having one language that does it all is better than learning several that might do it a little bit better.

permalink
report
reply
33 points

Careful, that attitude is how we ended up with this infestation of JavaScript!

permalink
report
parent
reply
4 points
*

JavaScript is very much not the second best language for anything.

JavaScript came about because it was the only choice in the context for which it was designed, and then it metasticized into other contexts because devs that used it got Stockholm syndrome.

permalink
report
parent
reply
4 points

“Metastasized” is a fantastic verb for JavaScript

permalink
report
parent
reply
3 points

holy shit you’re right

permalink
report
parent
reply
5 points
*

Python is the best “glue” language I’ve ever used. When you want to chain together your program’s high-level logic and all of the loops happen inside lower-level languages like Rust, Go, Zig, D or C, Python’s performance is perfectly adequate and it’s so clear and concise it reads like pseudocode.

permalink
report
parent
reply
2 points

As long as you do all your lookups with dicts or sets performance is pretty decent for smaller workloads.

permalink
report
parent
reply
1 point

Python is secretly a functional-paradigm language. If you’re not making liberal use of comprehensions instead of loops (especially loops with LBYL conditions in them), you’re doing it wrong.

permalink
report
parent
reply
1 point

Even worse when you look at a class that’s over 1k long.

permalink
report
parent
reply
8 points

Speed is a serious problem in Python though. Python has its use cases, and so do other languages. Things would not end well if we started using Python for everything.

permalink
report
parent
reply
1 point
*

If I wanted to write a 3D game engine, I wouldn’t use Python either. But there’s zero chance of me ever doing that. For 90% of things 90% of people do, Python works just fine. And the performance thing is actively being worked on and getting better all the time.

permalink
report
parent
reply
2 points

This might be an unpopular opinion but python’s speed wouldn’t even be an issue if it was 5x slower than it is now.

Python is a language designed for write-time performance, not runtime performance.

permalink
report
parent
reply
1 point

I have worked on a lot of real time simulation with python glue. It is… not fun. I’m a better programmer for it though.

permalink
report
parent
reply
1 point
*

Not since 3.11, python is now one of the fastest languages

permalink
report
parent
reply
1 point

Definitely not even close to being one of the fastest languages, but still faster nonetheless.

permalink
report
parent
reply
6 points

Things that could have been done in bash is python’s best usecase. And bash sucks for scripting. Why not python?

permalink
report
reply
-8 points

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.

permalink
report
parent
reply
3 points

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.

permalink
report
parent
reply
1 point

Xonsh

permalink
report
parent
reply
19 points
*

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.

permalink
report
parent
reply
4 points

compose into some crazy one-liner piped chains of commands

Why not something that is completely redesigned from the ground up:

permalink
report
parent
reply
2 points

That looks really elegant. I think I’m gonna give it a try. Thanks a lot for the recommendation!

permalink
report
parent
reply

have you ever tried to recreate a simple shell pipeline in Python

permalink
report
parent
reply
-2 points

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.

permalink
report
parent
reply
35 points

Friends don’t let friends do string manipulation in bash.

permalink
report
reply

youre right

thats what sed is for

permalink
report
parent
reply
22 points

Well this is awk-ward

permalink
report
parent
reply
6 points

That’s what she sed

permalink
report
parent
reply

Programmer Humor

!programmer_humor@programming.dev

Create post

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

  • Keep content in english
  • No advertisements
  • Posts must be related to programming or programmer topics

Community stats

  • 7.1K

    Monthly active users

  • 953

    Posts

  • 36K

    Comments