[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Teaching Linux this summer



I thought this was teaching -Linux- :) If I'm wrong about that, please feel
free to ignore the following...

A section on directory structure and navigation thereof is as important as it
is a skill transferable to most other operating systems. The typical lab thing
keeps coming up over and over: "I saved my file on my floppy then took it 
home... so where is it??" after saving it to a place like /tmp, or their home 
dir, or their other floppy...

They should know maybe 10 commands: ls, cat, more, cd, mkdir are the basic ones
and I'll mention more commands down the page. By the first week or so, they
should know the commands in their basic forms and how to find out more from the
man pages. (IMPORTANT POINT!! They MUST have research skills! Being good
citizens on the Internet requires this!)

If you are to call this a course on Linux, the web stuff is way wayyyy too
overemphasized. You can support other web courses by covering the transfering
of files. Recommend ssh.

Next, the input-process-output model as support for pipes and redirections is
a central key to understanding how linux commands can work together. To omit
it is to deny the ability to think for one's self when doing shell programming.

                                                 ------------------
                                         ----->  > standard output >
                           ------------ /        ------------------
--------------------       |    a     |/
> standard input    >  --> |   UNIX   | 
--------------------       |  command |\
                           ------------ \        -----------------
                                         ----->  > standard error >
                                                 -----------------

Some more commands they should know (after input-process-output is presented)
are filters, like sort, grep, uniq, cat as the "null filter", and maybe xargs.
The find command should be presented.

Then you can have them create pipelines, and you can illustrate them maybe
like this:
                       ---      -----  /--> terminal screen
---     -----  /-----> >  > --> |uniq|< 
>  > -> |sort|<        ---      -----  \--> 
---     -----  \--> 
  |
  |
  ^
 key
board

This illustrates a "pipeline" of two commands: sort | uniq. The mechanism:
the "standard input" of sort comes from the keyboard, its standard output
is "piped" into the standard input of uniq.

Maybe here would be a good time to show that any commands they can type into
the shell, can also be stored in a file (called a "script"). If not here, then
earlier. Also mention the top line of a shell having the special property that
it can specify which interpreter will run the script.

Once you do that, you can introduce things like perl scripts.

Here's the problem I see: If you call it a "linux" course and you do not teach
these things (i.e., basic, *essential* -unix-), they won't have necessary 
skills wrt jobs requiring linux and/or unix skills.

On the other hand, if what you want is a -web publishing- course, perhaps a
retitling of the course is in order :)