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.