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."
As long as "makewhatis" is setup first, that will do about the same thing.
Gentoo Linux - another day, another USE flag.
Remember??
I still today spend way more time in a 4DOS (or well, 4NT) prompt than I do in the windows GUI.
Virtually everything I do at work is done via 4NT BTM files (batchfiles that only work in 4DOS/4NT).
The CMD line interface is really good, and it makes me a little sad that new computerusers don't realize this.
Some things are just done so much quicker using the CMD interface...
For example, I use multiple computers at work, and I have to transfer files between them all the time.. I do this using 4NT BTM's, and it takes a few seconds to transfer a file... doing the same thing in a FTP app takes much longer...
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'.
bash$> for tif in `ls *.tif` ; do convert $tif -border 50 -bordercolor \#FFFFFF -quality 100 -scale 25% -resolution 96 `cat $tif | cut -f1 -d"."`.jpg ; done
Put THAT in your GUI.
I want to delete my account but Slashdot doesn't allow it.
Build it, and they will come^Hplain.
...and oddly enough, (a) Microsoft added some sixty (!) command-line functions in Windows Server 2003 and (b) "Longhorn" (ETA most likely 2006 by now) is due to have a *NIX-grade Command Shell (IIRC the codename for development is "monad")
These tools seem mostly geared towards system and network administrators and such. However, looks like they have changed their mind a bit on the matter...
In the long run we are all dead. - John Maynard Keynes (1883 - 1946)
I couldn't agree more. I went without a mouse for two weeks using winXP. Why? Long story! Anyhow, I became so familiar with the keyboard shortcuts, I was soon using the GUI faster than when I was using a mouse.
The keyboard shortcuts are faster (in general) than the mouse-work it would take to do the same thing. There are stumbling blocks, somethings are *impossible* with a keyboard, but on the whole I found a way to do most things. Getting the context-menu from an icon in the system tray isn't as fast as with a mouse, but it's not impossible. Selecting text in IE is impossible, but you can always 'view source' and copy from there.
I still use a mouse of course! They're indispensible, but I'm not as reliant on it. I do shudder when I see someone take as many as 10 mouse-clicks in what can be done in 3 keystrokes. Yes, the keyboard is powerful, and under-rated.
On-topic: I thought the whole idea of GUIs was to make the whole experience more 'user-friendly' for beginners. Maybe in the beginning, but looking around my GUI and it's myriad dispirit elements it's easy to see how a simple 'C:\>' would be a far easier to comprehend starting point for newbies.
I ran a benchmark on my quantum computer, now I can't find it anywhere!
Your pathnames argument is just wrong. Ever heard of tab completion? GUIs mostly suck because they don't have it. Of course the much critisized GTK+ file selector is one of those that do have it. Learn it and use it, never click again.
Your whole argument does a poor job telling me why a GUI is better than a CLI. What is does an excellent job at is telling me the differences between the two and the situations in which I would use one or the other, and I really think that is the key.
There are huge differences between the GUI and CLI and they do entirely different things. You use the example of Photoshop or other "applications" that don't really translate well to the CLI. You need the GUI for that. In the CLI, we use "programs" that take care of a specific task and no more. As you say, "fully specified." Great for automation or batch jobs.
I think this is why most people who use *NIX on a personal machine have some sort of desktop on which they can run "applications" and will drop into a shell when they need to run a "program".
Now, which is easier for newbies is obviously up for debate. It's been a long time for me, so I'm really poorly qualified to comment on that.
Je fume. Tu fumes. Nous fûmes!
In the Beginning was the Command Line, by Neal Stephenson. It's available in text form from http://cryptonomicon.com/beginning.html.
I think you just redesigned bash completion. This does the "cd a" thing exactly how you want it to. I don't think it handles the argument expansion thing yet though. That would be doable though. Most programs use getopt() to parse arguments, it is probably possible to put hooks into that function that bash could use to do the expansion. It wouldn't be trivial, since you would have to run the program in the background to see what arguments it accepts (probably something similar to how ldd runs a program to determine what libraries it uses), but it could be done.
That was great! However, he actually appears with four eyes and a squiggly hair. This looks much better:
:\\\); else echo :\\\(; fi\` "
PS1="\w \`if [ \$? = 0 ]; then echo
Not that this wasn't entirely predictable.
I think that is a very good idea and for that reason after reading your comment I decided to write such a program according to your specification.
Just remember who has just made Linux four times what it was today: me, Pan T. Hose, PhD.
That having been said, I'll post that program in another comment, because I have to post it as "Code" instead of "HTML." Please mod it up (the actual code, as well as the instructions below) as Score:5, Insightful, so everyone could read it and install, because I think every Slashdotter deserves to have her Linux four times better than it has ever been.
You have to save my program as /usr/local/bin/smarthelp, then run:
chmod a+rx /usr/local/bin/smarthelp
as root and insert this line in your ~/.bashrc file:
[ $PS1 ] && alias help=smarthelp
Remember to give me credit and to not violate the GNU General Public License it is hereby released under. The code follows:
Sincerely,
Pan Tarhei Hosé, PhD.
"Homo sum et cogito ergo odi profanum vulgus et libido."
#!/bin/bash
/usr/local/bin/smarthelp /usr/local/bin/smarthelp
0 901
# save it as
# chmod a+rx
# and insert this line in ~/.bashrc:
#
# [ $PS1 ] && alias help=smarthelp
# PTH(R) Smart Help(TM) v1.0.1-pre2
# http://slashdot.org/comments.pl?sid=99801&cid=851
# Copyright (C) 2004 Pan T. Hose, PhD.
# http://slashdot.org/~Pan+T.+Hose
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
a=${@:-help}; help "$a" 2>/dev/null || man "$a" || apropos "$a"
Sincerely,
Pan Tarhei Hosé, PhD.
"Homo sum et cogito ergo odi profanum vulgus et libido."
I've never found info intuitive at all. The pinfo command however works great. It is a lynx style viewer for info pages. It required little work to figure out and is great when you hit those man pages that say:
"The full documentation for ls is maintained as a Texinfo manual."
To Do: 1. Take over world 2. Pick up Milk and Bread on the way home