By Peter Bell

Why The Command line Interface Sucks for Casual Users (and how to fix it)

As part of a series about upgrading the hosting environment at my day job, I was just thinking about home lame most terminal packages are for casual users . . .

Imagine you'd never used an *nix server. You have a terminal prompt and you want to do something (perhaps install some software, configure a virtual directory in Apache or find the amount of free drive space on your hard drive). Where do you start? There is a reason we don't design most web pages with a single text input box that only returns content if you enter a well formed command (to keep the analogy accurate imagine even the "search" box would only work if you typed "search [search terms] -p 20" to get 20 records per page and without the search command it just said " is an unrecognized command").

Of course, once you've learnt the subtleties of the command line it is an exceedingly efficient interface for advanced, regular users, but for the casual user, it sucks.

There is no simple fix, but I think there are a number of things that could reasonably be added to a command line that would keep the power while lowering the learning curve.

  • Context Sensitive Help - A button at the top right which allows you to get help (manuals, to do's, the works)- whether on the full system or on the command you're currently entering.
  • Command Completion - While I don't get much out of code completion in my programming language of choice as I'm pretty comfortable with the syntax, whenever I play with a new language, code completion/hinting makes life so much easier. Imagine a Linux command line with IDE style code completion for the various options (I mean, is it really *obvious* that you need to add a "-c" option to the ping command to stop it running on like the energizer bunny?). I think it's make life a lot easier for those of us cursed with occasional but essential sys-admin tasks.

Any thoughts on how the command line could be improved for the casual user?

Related Blog Entries

Comments
Well - Linux is all about RTFM :)

For help - there is always 'man'
man / info / help - Display helpful information about commands.

I'm always learning more about the shell and bash, etc... But there are a few things which make things easier on the command line...

CTRL+R = reverse search back through your history
!! = repeat last command
TAB = enter a dir or command and hit tab to 'autocomplete'

I agree - things could be more intuitive - but then it wouldn't be Linux! :)
# Posted By Jim Priest | 8/29/07 12:10 PM
@Jim, Agreed - I'm just saying it shouldn't be! It is a fundamentally flawed interface for casual use. Lets say you program, consult, do design, run a business and also happen to run your own servers - it is harder than it needs to be to do that with the current state of terminal shells.

Thanks for the hints though - they'll definitely help!
# Posted By Peter Bell | 8/29/07 12:29 PM
"Of course, once you've learnt the subtleties of the command line it is an exceedingly efficient interface"

in other news, most mums cannot be expected to drive a Ferrari

-- eokyere
# Posted By eokyere | 8/29/07 2:11 PM
command completion: zsh, bash, and fish already have this...been around for years...
# Posted By massysett | 9/4/07 5:10 PM
Yeah, but you have to program it yourself. Why is that? Imagine if your favorite IDE had code completion - but only as a generalized service and every individual developer had to create their own syntax files for their programming language of choice. I've got no problem with supporting extending a dictionary or even custom dictionaries, but you need to support full command completion (including parameter support with types and help) built right into the interface.

Does bash have that?! If so, why not?
# Posted By Peter Bell | 9/4/07 5:53 PM
Here's an idea for a radically new command line, tailored for the casual user:
http://cryptocarnivore.wordpress.com/2007/08/16/th...

It's characteristics are quite complementary to classic shells, with semantics based on stochastics (seriously!). So in the context of system administration, it might be more useful for inspection and monitoring than for configuring.
# Posted By cryptocarnivore | 9/5/07 9:02 PM
Very cool! I'm not sure whether the specifics will work out quite that way, but I think there is no question that we need to start crowdsourcing the learning for our UI's - it's gotta get better than a blank text box with a blinking cursor (bash) or a set of ever deeper menus (Photoshop). Simpler software helps, but appropriate simplicity for one is often too restrictive for the next.

Please keep me posted if you see anything going in this direction!
# Posted By Peter Bell | 9/5/07 9:30 PM
BlogCFC was created by Raymond Camden. This blog is running version 5.005.