Don't get me wrong! I love command line apps. But I wonder if we all have a bit of an Stockholm syndrome... there are several things that suck about them...
While writing this I'm thinking on my experience trying to do anything with ffmpeg or imagemagick... or even find.
* For any sufficiently complicated cmd line app, the list of arguments can be huge and the --help so terse as to be become useless. For man pages, the problem is the opposite... the forest hides the tree! I'm sure we all end up using google to look for example invocations.
* Very often completion doesn't work, since custom per-app machinery is needed. For instance: git-completion for with bash-completion.
* Sometimes I end up passing the help output through grep, then copy-pasting the flags from the output, and then hoping I got the right flag.
* ...how about things like regular expressions parameters... always so hard to remember the escaping rules! (and the regex flavor accepted by each different app).
* Not to talk about more complicated setups involved -print0 parameters or anything involving xargs, tee, and formatting with sed and cut, etc.
Is there a better way? Not sure. I like powershell a bit but some of the things I mention above still apply.
I think we may be able to get a workflow that is a bit closer to the tooling we use for writing programs while not being perceived as verbose and heavy (I'm thinking, the kind of workflow I get with a Clojure repl).