Slashdot Mirror


The Command Line - Best Newbie Interface?

An anonymous reader writes "This essay describes the surprising results of a brief trial with a group of new computer users about the relative ease of the command line interface versus the GUIs now omnipresent in computer interfaces. It comes from practical experience I have of teaching computing to complete beginners or newbies as computer power-users often term them."

27 of 885 comments (clear)

  1. The 'help' command by nokilli · · Score: 5, Insightful

    I'd wager that computer literacy amongst people who've tried Linux would be twice what it is today if when you typed help foobar bash would perform a man foobar if 'foobar' wasn't a builtin command. And it'd probably be double that if you incorporated some kind of search facility too. Type in help disk space and get a hit on the df command, for instance.

    1. Re:The 'help' command by pandrijeczko · · Score: 5, Informative
      Just do an alias of "help" to "man -k".

      As long as "makewhatis" is setup first, that will do about the same thing.

      --
      Gentoo Linux - another day, another USE flag.
    2. Re:The 'help' command by TehHustler · · Score: 5, Insightful

      And thats going to make sense to newbies how?

      --

      TheHustler
      http://www.elmarko.org/ - Useless bilge
      http://www.asylum-games.co.uk/ - Co-Founder
    3. Re:The 'help' command by PowerBert · · Score: 5, Informative

      bash has a help builtin which will direct the user to man and info commands.

      $ help foobar
      -bash: help: no help topics match `foobar'. Try `help help' or `man -k foobar' or `info foobar'.

    4. Re:The 'help' command by oingoboingo · · Score: 5, Funny
      And it'd probably be double that if you incorporated some kind of search facility too. Type in help disk space and get a hit on the df command, for instance.

      How about a little animated 'bash$' command prompt which jumps up when you hit F1, or which politely asks "It looks like you're composing a shell script. Would you like some help!" when you're in a bit of a pickle. You could type in a plain-English question about what you wanted to do, rather than having to remember the cryptic names of Unix commands. When you selected your specific query from a list of options that the animated character presented to you, it would then go on to show you exactly how to enter the command you were interested in. It would be great! You could even theme this 'assistant' according to your shell...it could appear as an animated 'ksh' or even just a '%' sign for those wanting to get on with the job.

      As for a name, what about 'Bob'?

    5. Re:The 'help' command by zymurgy_cat · · Score: 5, Insightful

      I'd wager that computer literacy amongst people who've tried Linux would be twice what it is today if when you typed help foobar bash would perform a man foobar if 'foobar' wasn't a builtin command. And it'd probably be double that if you incorporated some kind of search facility too. Type in help disk space and get a hit on the df command, for instance.

      What I'd really like to see is a more helpful man page with examples. It's frustrating when using a new command to read "usage: foobar [VNFHDMudndghfud8734yfhfnbgdh] filename | device | dir | options filename[]" and then read through 5 pages of options and switches I'll never use. If every man page had at least a few examples of how to do stuff most people want to do, it'd be easier to both do those things and learn the more complex commands.

      Another nice thing would be a howdoi command which allows the input of natural language and spits out a small man page (with examples!) or help file, ie, "$>howdoi see how much hard drive space i have" spits out how to use df.

      --
      -- Fugacity: Confusing chemists since 1908
    6. Re:The 'help' command by gmack · · Score: 5, Interesting

      When I was in highschool I switched my PC from windows 95 to Linux after my sister had damaged my windows install. After the initial horror at what I had done wore off, my younger brother and sister got used to the new system. Four months later I discovered they were both making extensive use of the command line. I hadn't tought them a thing so they learned on their own. By the time I moved out I had my mother using pine over ssh to read her email.

      Most of the trouble of Linux is the inertia related to not wanting to learn new things and not being technically difficult.

    7. Re:The 'help' command by selderrr · · Score: 5, Funny
      [ldab:~] selderrr% help alias
      help: Command not found.
      [ldab:~] selderrr% help help
      help: Command not found.
      [ldab:~] selderrr% help me
      help: Command not found.
      [ldab:~] selderrr% help me asshole !
      help: Command not found.
      [ldab:~] jeroen% can you help me ?
      can: No match.
      [ldab:~] jeroen% where can i get help ?
      [ldab:~] jeroen%
      [ldab:~] jeroen% find help
      help: help: No such file or directory
      [ldab:~] jeroen% locate help
      ... (machine goes off into dumping half my 150GB)
    8. Re:The 'help' command by Gildor · · Score: 5, Funny

      I wonder how many Windows users, would, if they read your post, say "Hey, what a great idea!". Reminds me of a Dilbert cartoon. Dilbert jokingly tells the PHB that in order to get more customers they should start a massive spamming campaign. When Dilbert goes home, Dogbert says "You look like someone who was just put in charge of his own sarcastic suggestion."

    9. Re:The 'help' command by Anonymous Coward · · Score: 5, Interesting

      > Command output is problematic since users often expect feedback. For
      > example when we grep on a file and don't find the pattern, grep does not
      > generate any output.

      Try this:

      PS1="\w:\`if [ \$? = 0 ]; then echo :\\\); else echo :\\\(; fi\`\\\$ "

      This puts a little :) on the prompt if the previous command succeeded,
      and a :( if it failed.

      It doesn't help if the command was part of a pipeline or some such,
      but it's debatable what sort of feedback you want if something
      in the middle of one of them is unhappy.

    10. Re:The 'help' command by Anonymous Coward · · Score: 5, Funny

      Yeah, there needs to be another default output stream. stdin, stderr, stdout and stdidiot. Stdidiot is where you tell the user verbose output of what you are doing including positive affirmation! Jack Handy beware. Of course one should be able to setenv STDIDIOT=/dev/null to turn that off. Moreover, maybe you re-direct it into a pipe that a consolish app could tail? Then a little ticker window on the desktop closes the loop for those needing positive responses?

      Ok the name was tongue-in-cheek. But maybe there is something the idea. I've been living in Unix for more than a dozen years and most of the time I like the "tell me about it iff there are problems" philosophy, but a centralized ticker might occasionally be handy. As a first cut one could basically write a layer that takes the stuff spewed forth by most utilities when -verbose is kicked in and peel it out to stdidiot. If -verbose is thrown on the cmd line, then stdidiot is echoed to stdout too.

    11. Re:The 'help' command by bheer · · Score: 5, Insightful

      > I think the person doing the alias to man -k is the system administrator

      Ah, the "local customization" myth. This may have worked back in the day when all of MIT had three computers, but today there are too many darn computers to administer. Even clueful admins don't bother changing most defaults because they know their changes won't be obvious to end-users. The right place to make these changes is inside the distro, because that way the local mailing list/LUG/linux book will give one consistent, reinforcing message to the end-user.

    12. Re:The 'help' command by JavaLord · · Score: 5, Funny

      By the time I moved out I had my mother using pine over ssh to read her email.

      Most of the trouble of Linux is the inertia related to not wanting to learn new things and not being technically difficult.


      Yeah I know what you mean. When I was in high school I used to visit my grandmother in a nursing home all the time. She didn't know how to use Windows or E-Mail so I just gave her an old linux box. Like 2 months later she had root at NASA.

    13. Re:The 'help' command by gnu-generation-one · · Score: 5, Interesting

      "I think the person doing the alias to man -k is the system administrator... | ... Ah, the "local customization" myth. This may have worked back in the day"

      I think the person doing the alias to man -k is the distro maintainer

      "look, I typed la and it did an ls for me! And it works when I type dir too!" [mandrake newbie]

  2. Command line is your friend by scsirob · · Score: 5, Insightful

    I find it amazing how many computer "experts" are dead in the water when the mouse doesn't work or the GUI doesn't come up as expected.

    Too bad only the "old-timers" seem to appreciate the power of the keyboard.

    --
    To Terminate, or not to Terminate, that's the question - SCSIROB
    1. Re:Command line is your friend by chunkwhite86 · · Score: 5, Funny

      I find it amazing how many computer "experts" are dead in the water when the mouse doesn't work or the GUI doesn't come up as expected.

      These same so-called "experts" tend to have MCSE certificates proudly displayed on their cubical wall.

      --
      I'd rather be a conservative nutjob than a liberal with no nuts and no job.
    2. Re:Command line is your friend by w1r3sp33d · · Score: 5, Funny

      And many of us still use the most powerful keyboard ever created, the IBM (super-clicky) Model M. The sound of these keys has been known to kill users at twenty feet and drive MCSE's mad.

  3. Ah the command line... by Xpilot · · Score: 5, Funny

    Apprentice: "What is that, Master?"

    Master: "It's a command line. The instrument of a Unix Programmer. Not as random or clumsy as a GUI. An elegant interface for a more civilized age. Before the dark times. Before...Microsoft!"

    --
    "Backups are for wimps. Real men upload their data to an FTP site and have everyone else mirror it." -- Linus Torvalds
  4. Well by odano · · Score: 5, Insightful

    I believe it is because the command line is very simple and compact, single-threaded and simple to understand.

    Modern GUIs have many things going on at once, which can confuse people who have no idea what is going on. Windows pop up, there are icons to deal with, they have to search through endless menus to find what they want.

    The command line however has simple command to remember instead of complicated graphical procedures, and the status of the command line really never changes. If you mess something up, you are still back where you started, but in the GUI, a user could close a window to open another one which obviously confused people who don't understand what they mean.

    1. Re:Well by SvendTofte · · Score: 5, Interesting

      Sounds like the people here have no idea what makes GUI's so powerfull.

      1. State. You can (should) always at a glance be able to see what state the system has. With a CLI interface, there's simply no state. It's a command execute cycle forever.

      2. Exploration. Simply exploring a program, by seeing what it menu's contains, is a very easy, and intuitive way of exploring. CLI's have none of this.

      3. Rote memorisation. There is no motor memory when using the CLI. You must remember the syntax of commands 100% accurately. GUI's support "knowlegde in the world", as Norman puts it. Consider a door handle on a door, it has an obvious way of being used. Staring at "~$", is so very different.

      4. Easy reversal.

      In fact, the benefits of GUI's over CLI's are so many fold, I won't bother with digging out the literature.

      The command line has only one advantagde, it's speed, and the possibility of executing extremely complex commands. Both not things newbies are well known for.

      "To master modern GUIs, one must recall the operation, layout and relation to each other of hundreds, if not thousands, of such panels."

      Funny, I thought that was the same with CLI's. With a GUI, the GUI can at least support exploration of the interface. Click that arrow down, see what happens. A CLI can do none of these things, unless you consider adding random letters after a command, to be "exploration" ...

  5. Microsoft demonized the command prompt... by Xpilot · · Score: 5, Insightful

    ...as part of its Win95 hype machine. Microsoft likes to point out that pointy-clicky is sooo much easier than the "arcane" and "cryptic" command prompt, and tried as hard as possible to hide it. Microsoft certainly didn't try to improve its command prompt much, and even in modern version of Windows it still retains a lot of its retardedness inherited from the early days of DOS.

    The question is, why? Sure, newbies hate it, but it's really useful to have a powerful command prompt, so it wouldn't hurt to include it. Even Macs have them now. Windows would be much more tolerable if it had a Unix-style command shell out of the box. Yet Microsoft feels the command prompt should die and it seems (at least from my point of view) that it's included only grudgingly in the OS.

    --
    "Backups are for wimps. Real men upload their data to an FTP site and have everyone else mirror it." -- Linus Torvalds
  6. Full screen editors rock by MagerValp · · Score: 5, Funny

    **** COMMODORE 64 BASIC V2 ****

    64K RAM SYSTEM 38911 BASIC BYTES FREE

    READY.
    #


    Now that's newbie friendly.
    --

    READY.
    #
  7. Building a better shell by arevos · · Score: 5, Interesting
    Interestingly enough, I'm designing a shell for my final project at Uni. This is a pretty useful article, all considering. I was originally designing the system to be more easy to use for powerusers, but perhaps there's a niche for newbies too.

    Before, I was concentrating on the syntax of control structures. Like having:
    if ($value == 1) { echo hello }
    for $i (1:10) { echo $i green bottles }
    Rather than:
    if [ $value -eq 1 ]; do echo hello; fi
    for i in `seq 1 10`; do echo $i green bottles; done
    I could think about adding in a better help system as well. I've got a few months left of design work.

    And I need to fix the lexer, too. In a recent presentation, I found a rather embarrassing bug. The concatenation operator in my shell is the same as perl's, the full stop, or period, ".". Cleverly, the shell can also treat numbers as strings and strings as numbers.

    Unfortunately, it was all a bit too clever.

    The expression 3.0 + 2.0 was parsed as (("3" . "0") + 2) . "0"). Giving 320. Oops!

    But given a little more work, maybe I could get it to solve some of the problems mentioned in the article above. Could be an interesting thing to do.
  8. Re:purely anecdotally by Anonymous Coward · · Score: 5, Insightful

    The issue here is that while you have no desire to find out how your computer works, YOU STILL NEED TO. The common analogy is that people rarely would think it makes sense for someone to buy a car with no clue how it works, even if you only understand fail conditions.
    Before you say you have no idea, if you live in the US, you did have to a test before you were allowed on the road, if you recall, and in that bank of questions there are fail conditions, such as driving on ice, perhaps even dealing with bug related Emergencies ( The long test to pass driver's ed around here included some very amusing questions about what to do when you discover a bee in your car )
    However, people rely heavily on their computers and never try to learn basic fail conditions, like file location, full disk problems, uninstalling undesired programs, checking for updates. I'm not saying everyone needs to have a nitty gritty look at their kernel source, but you should know the difference between an ISP and AOL. You PAY for this stuff, you should have a vague idea of how it works and first steps on how to fix it when it breaks.
    If you happen to be a supreme fool that knows so little about your car that you can't tell how fast it's goings, whether the engine is running hot, how to tell if your brakes need servicing ( waiting for the grind counts ), or the meaning of any of those "little flashy lights" on your "long window thing the steering wheel is hooked under", I pity you and your genetic tree.

  9. Good UI vs. bad UI, not GUI vs CLI... by dpbsmith · · Score: 5, Insightful

    The pity is that GUI usability peaked sometime in the late eighties and has declined since then, as the rise of "computer literacy" has created an expectation that users will master complex UI's, and the rise in computing power has removed any barriers to marketing-driven featuritis.

    The most telling point was the discussion of "discoverability." "Discoverable: The interface must, from first switch on, provide a clear direction for a new user to go. At each stage it should encourage experimentation while providing adequate notice of important or key features."

    In the 1980s, GUIs were intentionally designed to facilitate discoverability were far more "discoverable" than CLIs of the day. They were also intended to be forgiving. The user was supposed to feel empowered to try things, confident that there was always an "undo" to bring them back. On the Mac in the 1980s, "Undo" was far more prevalent and worked far more consistently than in today's software, in which many operations commit you to something whose effects you may not understand.

    As for "dialog," UI designers understood that well. Why do you suppose that what are now called "screens" were once called "dialog boxes?"

    What the article is really saying is not that CLIs are better than GUIs, but that a) modern UIs are not catering to the needs of the average user, and that b) modern UIs have gotten so badly designed, cluttered, and complex that they have become less usable to beginners than CLIsbecause GUIs have deteriorated, while CLIs have benefitted from benign neglect.

  10. Obligatory IBM Model M link by oneiros27 · · Score: 5, Informative
    The Model M is still being made, under a different name, but you can now get them with a 'windows' key, or even in black.
    http://www.pckeyboard.com/customizer.html
    --
    Build it, and they will come^Hplain.
  11. Re:CLI vs GUI Ease of Use by frog51 · · Score: 5, Insightful

    At risk of just sounding argumentative, I actually disagree on almost every point you have just made. My background has led me through assembly and machine code in the days of 6809, 68000, Z80 and 6502, through Pascal, Forth, VB, C++ etc etc so I have had a fair amount of experience of various platforms, and the one thing I have learned above all others is how inferior a GUI usually is.

    I agree that word processing is generally easier with a WYSIWYG word processor, but there are damn few of them. If it comes down to needing a specific layout, I know LaTex will work where MS Office often fails. And any graphical manipulation should be easier using graphical tools.

    But your other points:
    CLI = Dialog? The article mentions the notion of CLI as a dialog. But this is a misleading metaphor because so many CLI commands create invisible effects. A GUI has far more invisible effects, as you can't even tell what commands it runsYou tell the computer to do something and all that returns (in most cases) is a command prompt. A Unix command which returns a prompt implies it completed. Error codes are output from almost everything, and if you want to see them you can.At best its like teaching someone to to do a job while speaking through a door. You give a command to do something (e.g., move a file from directory to another) and then you have to give a command to see the results (ls).Or alternatively, you give the command and trust the agent to perform its duties and only return an issue when there is a problem

    Discoverability: GUIs also provides visibility on to the set of available commands and functions. By browsing through the menus (which are usually nicely organized)Some are nicely organised, and to be fair, this is an area where there is great improvement, but in general I find it a nightmare to have to drop down through menu after submenu, sometimes in unintuitive places, to carry out a simple command., you can learn the functions of an application. In contrast, a CLI-only machines provides no obvious way to learn about commands that you did not know existed -- at best you can access an alphabet soup of cryptic vowelless cmmnd names and then access the man page on each command. Therefore, GUI applications tend to be self-documenting, CLI commands require that you first know of the existence of the command and then you must read the man pages (grepping the man pages sometimes works if you know the jargon for what you are looking for).There is an argument for simpler documentation than 'man' pages, but in reality, all that I think would be required is some indexing system.

    Undo command: Most well-behaved GUI applications further support user learning via experimentation by having an undo command (and a revert command). CLIs tend to be irrevocable with no possibility for undoing inadvertent damage by a novice user (short of reloading the entire machine from a backup). Erm...novice user...should not have access to anything other than their own files, so should not cause irreversible damage. If they do have root, well, that's kind of the same as letting newbies have administrator access on Windows machines...a very bad idea. There should be no need. Its no wonder *nix people get upset at the thought of novices on computers. But this lack of an "undo" is the fault of *nix CLI (it could easily be remedied with automatic file version tracking and journalling). What do you mean by undo anyway? An undelete? Easy. A 'revert back to before I overwrote that file with this one' option? Does your GUI give you that?

    GUI is the superset of a CLI: Some people complain that GUIs take too long and I agree with them. CLI does offer a faster interface for experienced users. Yet a good GUI offers keyboard shortcuts that let experienced users invoke commands from the keyboard. While it is easy to have a keyboard shortcut available and shown in a mouse-oriented graphical GUI menu, it is hard to have a graphical menu shortcut in a keyboard-or