Observations on Teaching Newbies to Use a Shell

I've been teaching Linux/Unix Fundamentals courses recently, and
thought I'd share some observations about students - some that
surprised me. The course I teach is very command line intensive;
while the individual student workstations are setup with graphical
environments (KDE), the course can be taught and the concepts
learned from a console.

Some of the students I teach are absolute beginners to Linux or
Unix, so they have never typed a command into a shell environment
before. A lot of the other students' last experience with a command
line was some exposure to MS-DOS that is now a faint memory.

The first thing that I saw was the propensity to completely
misunderstand how a command-shell environment works. By that I mean
you want to do something, so you type a command and hit enter.
Something then appears in the shell window (typically an error), or
not (successful command - this one is particularly baffling to
students). It seems obvious until you look at it from the
perspective of the full-time mouse-wielding student. Speaking of
mice, many students continually grab for the mouse to do something,
they don't know what. Students also have a hard time grasping that
there must be spaces between the command and any arguments, so they
type stuff like "cpfoo.txtfoo2.txt", then ask why they are getting a
"command not found" error. What you don't think of until you try to
teach it to someone is that there is much more that students have to
know in order to fully grasp command line use, for example the
basics of how an interpreter works, command line editing, command
path searching, environment variables, file permissions and
filesystem layout. Think about understanding why you need './foo'
versus just 'foo', and why a shell script 'foo' needs to be
executable, but not if you use 'sh ./foo'.

Another thing I noticed was that a good percentage of the newcomers
type the shell prompt itself when they see it used in examples. I
make sure to mention this in courses now, but it surprised me the
first time I saw someone do it.

A few students take to the command line very well, enough so that I
can tell they will leave class and try to install Linux themselves
to get more practice. For the other students I recommend they use
some live CD-based distro, like Ubuntu, that will hold their hand at
first, but still make the CLI available should they want it later. I
also recommend they create an account on the SDF public access Unix
system, since it's a good way to learn more without having to
install anything, and there are lots of experienced people there to
help with questions.