At the risk of sounding like a broken-record aging neckbeard (reality: I'm a college student with light stubble), I think the title of this thread is very misleading, even if the blog post itself contains valuable material. First, I'm just barely old enough to remember using DOS on a machine without Windows -- which I believe is the last time that a GUI/DE wasn't viewed as 'essentially essential' for an end-user comp…
I think there is much more that can be done to make tools more user-friendly. An example that pops to my mind is when you misspell a git command, and git suggest what you could've intended: $ git pill git: 'pill' is not a git command. See 'git --help'. Did you mean this? pull That's already one step towards a better UI, but it could go even one step further if I could answer the question, ie: I press 'y' and git will…
More importantly, though: what you're looking for can already be done! Just use zsh (or, even simpler: a bash correction tool).
Because Unix is so modular, you can make these kinds of UI changes without breaking or even changing the underlying toolset. That means that you and I can tailor the UI to our specific needs, and we don't even really have to touch the general purpose toolset. Other examples include using Vim keybindings for the shell instead of Emacs (try modifying keyboard shortcuts with most pre-compiled GUI applications!) or scripting and aliasing.
Thanks for mentioning that, actually, because it illustrates my point very well! The command-line UI's strength is that it's literally as modular and as minimal as possible (at least, as far as I can conceive of). That's what I personally love the most about it. It defines only the bare minimum of tools necessary to satisfy two conditions:
1. By default, [almost] everything works as expected, with no customization (but assuming knowledge of the system). 2. Those who want to customize will find that it provides all of the tools necessary to create the exact interface they want, without modifying the underlying toolset as well. (This customization can be done to an essentially arbitrary level -- the technical limitations are well beyond what a reasonable person would consider 'sane').
You may make the argument, then, that the command-line isn't even an interface at all! It's more like an abstract interface that lets you stitch the tools together to define the interface you want, all the while providing a 'default interface' - a sensible set of defaults for those who can't be bothered to customize.
(Edit: I understand that tools aren't perfect - the git-pull/git-push asymmetry is an example - but the inconsistencies are vastly outnumbered by the overarching uniformity. And again, with such a modular model, you can create the UI you want without waiting for Linus to change the behavior of git).