If "programs ought to do one thing and do it well", then why aren't they just library functions in a scripting language? Scripting languages can probably do the same things (if given minor syntax improvements, see Xonsh) in one line as well, and scale to have more complicated logic if needed. I still don't see the beauty.

I mean... isn't that what is already happening, the shell is the scripting language, and compiled binaries that mung text are the library functions.

Unix/Unixlike operating systems aren't perfect, but they get the job done.

The downer is that every function call in this system has only string parameters.

That's because this is the way they thought back then. You can trivially pass json data between processes and make a coherent structured system. Nobody does it though.

jq has >20k stars on GitHub.

I use it mostly for little cli utilities, so maybe it isn’t an exact refutation of your claim.

[0] https://github.com/stedolan/jq