|
Harley Hahn Home Page
INSTRUCTOR AND STUDENT MATERIAL...
Home Page & Overview
Summary of Book Contents
Detailed Table of Contents
The Unix Model Curriculum &
Course Outlines
Unix Timeline for Students
Internet Resources
Errors and Corrections
Exercises and Answers
• Introduction
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
PowerPoint Files
|
The Unix Model Curriculum:
Outline for a One-Semester Course
The Unix Model Curriculum is a detailed plan
for teaching all the important concepts
necessary for an introductory course in Unix
and Linux. The Unix Model Curriculum was
developed by Harley Hahn to help instructors
decide which topics to teach and the order in
which to teach them.
The following is an outline for a
one-semester Unix/Linux course based on the Unix
Model Curriculum. The outline contains a total
of 78 teaching units, each of which takes about
25 minutes to teach. The intention is for you
to teach 6 units per week.
Thus, if you have two 1½-hour classes a week,
you should teach 3 units per class. If you
have three 1-hour class a week, you should
teach 2 units per class. In all, it should
take you 13 weeks to teach the course (78/6 = 13).
The schedule is based on a 16-week semester,
with the last week taken up by
final exams, leaving 15 teaching weeks.
I assume that, during these 15 weeks, two
classes will be used for midterm exams, and
two classes will be lost because of holidays.
Within the course outline below, the section numbers
refer to the Unix Model Curriculum. The page
references indicate the relevant pages to read
in the textbook Harley Hahn's Guide to Unix
(McGraw-Hill Higher Education).
Section 1: Introduction to Unix
| Unit |
Page References |
Topics |
| 1 |
• The Unix family of operating systems
• The Unix culture
• Why do we use Unix?
• Who uses Unix?
|
Section 2: What is Unix? What is Linux?
| Unit |
Page References |
Topics |
| 2 |
• What is an operating system?
• What is the kernel?
• Unix = Kernel + Utilities
|
| Unit |
Page References |
Topics |
| 3 |
• The GPL (General Public License) and Open Source Software
• The development of Linux
• Linux Distributions
• What is Unix? What is Linux?
|
Section 3: The Unix Connection
| Unit |
Page References |
Topics |
| 4 |
• Multiprogramming, time-sharing
• Host and terminals paradigm
• Terminal rooms, terminal servers
• The console
|
| Unit |
Page References |
Topics |
| 5 |
• Remote terminals, terminal emulation programs
• Hosts without consoles, headless systems
• Client/server relationship
• What happens when you press a key?
• Character terminals, graphics terminals
|
Section 4: Starting to Use Unix
| Unit |
Page References |
Topics |
| 6 |
• System administrator
• Userids and passwords
• Logging in
• What happens after you log in?
• Shell prompt
• Logging out [logout, exit, login]
|
| Unit |
Page References |
Topics |
| 7 |
• Upper- and lowercase
• Changing your password [passwd]
• Choosing a password
• Userids and users
• The superuser userid [root]
• (Appendix E: What to Do If You Forget the Root Password)
|
Section 5: GUIs: Graphical User Interfaces
| Unit |
Page References |
Topics |
| 8 |
• What is a GUI?
• X Window
• Layers of abstraction
• Window manager
|
| Unit |
Page References |
Topics |
| 9 |
• Desktop environment
• KDE and Gnome
• Choosing a Desktop Environment
|
Section 6: The Unix Work Environment
| Unit |
Page References |
Topics |
| 10 |
• The GUI and the CLI (command line interface)
• Logging in and logging out with a GUI
• Runlevels
|
| Unit |
Page References |
Topics |
| 11 |
• Multiple desktops/workspaces
• Terminal windows
• Virtual consoles
• The console
|
| Unit |
Page References |
Topics |
| 12 |
• Working as superuser [su]
• Configuration files [sudo]
• Shutting down; rebooting [init, reboot, shutdown]
• What happens when the system starts or stops? [dmesg]
|
Section 7: Using the Keyboard With Unix
| Unit |
Page References |
Topics |
| 13 |
• Teletypes and the Unix Culture
• How does Unix know what type of terminal you are using?
• Modifier keys
• Unix keyboard signals [erase, werase, kill]
• Stopping a program [intr, quit]
|
| Unit |
Page References |
Topics |
| 14 |
• Pausing the display [stop, start]
• End of file signal [eof]
• Shell: Trapping the eof signal
• Command line editing
• Return; linefeed; newline
|
Section 8: Programs to Use Right Away
| Unit |
Page References |
Topics |
| 15 |
• Finding a program on your system [which, type, whence]
• How do you stop a program?
• Displaying the time and date [date]
• (Appendix F: Time Zones and 24-Hour Time)
• Displaying a calendar [cal]
• Information about your system [uptime, hostname, uname]
|
| Unit |
Page References |
Topics |
| 16 |
• Information about you [whoami, quota]
• Information about other users [users, who, w]
• Built-in calculator [bc, dc]
|
Section 9: Documentation
| Unit |
Page References |
Topics |
| 17 |
• The Unix tradition of teaching yourself
• RTFM
• What is the Unix manual? [man]
• Man pages
|
| Unit |
Page References |
Topics |
| 18 |
• Displaying man pages
• Organization
• Section numbers
• Referencing man pages
|
| Unit |
Page References |
Topics |
| 19 |
• Format of a man page
• Finding out what a command does [whatis]
• Searching for a command [apropos]
• Foo, bar and foobar
|
| Unit |
Page References |
Topics |
| 20 |
• The Info system [info]
• Info and trees
• Starting Info
• Learning about Info
|
Section 10: Command Syntax
| Unit |
Page References |
Topics |
| 21 |
• Entering more than one command at a time
• What happens when you enter a command?
• Command syntax
• Options
• Dash options; dash-dash options
|
| Unit |
Page References |
Topics |
| 22 |
• Arguments
• Whitespace
• One or more; zero or more
• Syntax: the formal description of a command
• Learning command syntax from the Unix manual
• Dealing with a lot of options
|
Section 11: The Shell
| Unit |
Page References |
Topics |
| 23 |
• What is a shell?
• The Bourne shell family [sh, ksh, bash]
• The C-Shell family [csh, tcsh]
|
| Unit |
Page References |
Topics |
| 24 |
• Which shell should you use?
• Changing your shell temporarily
• Changing your login shell [chsh]
|
Mid-term Exam #1
Section 12: Using the Shell: Variables and Options
| Unit |
Page References |
Topics |
| 25 |
• Interactive shells; non-interactive shells
• Environment; processes; variables
• Environment variables; shell variables
• Displaying environment variables [env, printenv]
|
| Unit |
Page References |
Topics |
| 26 |
• Displaying shell variables [set]
• Displaying and using the value of a variable [echo, print]
• (Appendix G: Shell Options and Shell Variables)
• Bourne shell family: Using variables [export, unset]
• C-Shell family: Using variables [setenv, unsetenv, set, unset]
|
| Unit |
Page References |
Topics |
| 27 |
• Shell options [set -o, set +o]
• (Appendix G: Shell Options and Shell Variables)
• Displaying shell options
|
Section 13: Using the Shell: Commands and Customization
| Unit |
Page References |
Topics |
| 28 |
• Metacharacters
• Quoting; escaping
• Strong quotes; weak quotes
|
| Unit |
Page References |
Topics |
| 29 |
• Builtin commands [type]
• External commands
• Search path
• Shell prompt
• Using the value of a variable
|
| Unit |
Page References |
Topics |
| 30 |
• Quoting variables
• Escape character
• Command substitution
|
| Unit |
Page References |
Topics |
| 31 |
• Typing commands; making changes
• History list [fc, history]
|
| Unit |
Page References |
Topics |
| 33 |
• Autocompletion
• Aliases [alias, unalias]
|
Section 14: Using the Shell: Initialization Files
| Unit |
Page References |
Topics |
| 33 |
• Initialization files; logout files
• Names of initialization and logout files
• Dotfiles and rc files
• Using a simple text editor
• Login shells; non-login shells
• When are initialization files executed?
|
| Unit |
Page References |
Topics |
| 34 |
• What to put in initialization files
• Displaying, creating and editing initialization files
• Comments in shell scripts
• Bourne shell family: sample initialization files
• C-Shell family: sample initialization files
|
Section 15: Standard I/O, Redirection, and Pipes
| Unit |
Page References |
Topics |
| 35 |
• The Unix philosophy regarding tools
• (combining tools, small is beautiful)
• Standard input; standard output; standard error
• Redirecting standard output
• Preventing files from being replaced or created by redirection
|
| Unit |
Page References |
Topics |
| 36 |
• Redirecting standard input
• File descriptors
• Redirecting standard error: Bourne Shell family
• Subshells
• Redirecting standard error: C-Shell family
|
| Unit |
Page References |
Topics |
| 37 |
• Combining standard output and standard error
• Throwing away output (/dev/null)
• Redirection summary
• Pipelines
• Splitting a pipeline [tee]
• Conditional execution
|
Section 16: Filters: Introduction and Basic Operations
| Unit |
Page References |
Topics |
| 38 |
• Variations of commands and options
• Filters
• Creating filters
• The problem solving process
• The simplest possible filter [cat]
|
| Unit |
Page References |
Topics |
| 39 |
• Increasing the power of filters
• The most useful filters
• Combining files [cat]
• Selecting lines from the beginning or end of data [head, tail]
• Deleting columns of data [colrm]
|
Section 17: Filters: Comparing and Extracting
Section 18: Filters: Counting and Formatting
| Unit |
Page References |
Topics |
| 40 |
• Comparing files
• Comparing any two files [cmp]
• Comparing sorted text files [comm]
• Comparing unsorted text files [diff]
• Counting lines, words, characters [wc]
|
Section 19: Filters: Selecting, Sorting, Combining, and Changing
| Unit |
Page References |
Topics |
| 41 |
• Selecting lines that contain a specified pattern [grep]
• The most important grep options [grep]
• Selecting lines beginning with a specific pattern [look]
|
| Unit |
Page References |
Topics |
| 42 |
• Sorting data [sort]
• Controlling the order in which data is sorted [sort -dfn]
• Checking if data is sorted [sort -c]
|
| Unit |
Page References |
Topics |
| 43 |
• ASCII code
• (Appendix D: The ASCII Code)
• Collating sequences
• Locales
|
| Unit |
Page References |
Topics |
| 44 |
• Finding duplicate lines [uniq]
• Merging sorted data from two files [join]
• Translating characters [tr]
• Translating unprintable characters
|
| Unit |
Page References |
Topics |
| 45 |
• Using sed for non-interactive text editing [sed]
• sed: Substitutions
• sed: Specific lines only
• sed: Very long commands
|
Section 20: Regular Expressions
| Unit |
Page References |
Topics |
| 46 |
• Introduction to regular expressions
• Matching lines
• Matching words
• Matching characters
• Character classes
• Predefined character classes
|
| Unit |
Page References |
Topics |
| 47 |
• Ranges
• Locales and collating sequences
• Repetition operators
• Understanding complex regular expressions
|
Mid-term Exam #2
Section 21: Displaying Files
| Unit |
Page References |
Topics |
| 48 |
• Survey of programs used to display files
• Using less for paging [less]
• less: Starting, stopping, help
• less: Most common commands
|
| Unit |
Page References |
Topics |
| 49 |
• less: Searching within a file
• Comparing less to cat
• Displaying the beginning of a file [head]
• Displaying the end of a file [tail]
• Watching the end of a growing file [tail -f]
|
| Unit |
Page References |
Topics |
| 50 |
• Binary, octal, hexadecimal
• Why we use hexadecimal rather than octal
• Displaying binary files [hexdump, od]
|
Section 22: The vi Text Editor
Special references:
• Summary of vi Commands (Appendix C, pages 827-823)
• Quick Index for the vi Text Editor (pages 891-893)
| Unit |
Page References |
Topics |
| 51 |
• Introduction to the vi text editor [vi]
• Starting vi
• Command mode; input mode
• Knowing what mode you are in
|
| Unit |
Page References |
Topics |
| 52 |
• Starting vi as a read-only editor: [view, vi -r]
• Recovering data after a system failure
• Stopping vi
• How vi uses the screen
• Using vi and ex commands
• How to learn vi commands
|
| Unit |
Page References |
Topics |
| 53 |
• Creating a practice file
• Moving the cursor
• Moving through the editing buffer
• Jumping to a previous location
|
| Unit |
Page References |
Topics |
| 54 |
• Searching for a pattern
• Using line numbers
• Inserting text
• Changing text
• Replacing text
• Deleting text
|
| Unit |
Page References |
Topics |
| 55 |
• Undoing or repeating a change
• Recovering deletions
• Moving text
• Copying text
• Copying lines
• Moving lines
|
| Unit |
Page References |
Topics |
| 56 |
• Entering shell commands
• Using a program to process data [fmt]
• Writing data to a file
• Initialization files: [.exrc, .vimrc]
|
Section 23: The Unix Filesystem
| Unit |
Page References |
Topics |
| 57 |
• What is a file?
• Types of files
• Directories; subdirectories
• Introduction to special files
• Special files: hardware
• Special files: terminals [tty]
• Special files: pseudo-devices
|
| Unit |
Page References |
Topics |
| 58 |
• Tree-structured filesystem
• Filesystem Hierarchy Standard (FHS)
• Root directory and subdirectories
• Mounting a filesystem [mount, umount]
• Contents: root directory
|
| Unit |
Page References |
Topics |
| 59 |
• Contents: /usr directory
• Directories that hold programs
• Home directories
• Virtual file system
|
Section 24: Working With Directories
| Unit |
Page References |
Topics |
| 60 |
• Pathnames: absolute, relative
• Working directory
• Pathname abbreviations ( .. . ~ )
• Moving around the directory tree [cd, pwd]
|
| Unit |
Page References |
Topics |
| 61 |
• Making a new directory [mkdir]
• Removing a directory [rmdir]
• Moving or renaming a directory [mv]
• Using ls to list files [ls]
|
| Unit |
Page References |
Topics |
| 62 |
• Directory listings [ls -CrR1]
• Collating sequences, locales and ls
• Checking file types I [ls -f]
• Checking file types II [ls --color]
|
| Unit |
Page References |
Topics |
| 63 |
• Checking file types III [file]
• Globbing; wildcards
• Dot files (hidden files) [ls -a]
• Long directory listings [ls -dhltu]
|
Section 25: Working With Files
| Unit |
Page References |
Topics |
| 64 |
• Creating a file [touch]
• Rules and conventions for naming a file
• Copying a file [cp]
• Copying files to a different directory [cp]
• Copying a directory to another directory [cp -r]
|
| Unit |
Page References |
Topics |
| 65 |
• Moving a file [mv]
• Renaming a file or directory [mv]
• Deleting a file [rm]
• How to keep from deleting the wrong files [rm -if]
• Deleting an entire directory tree [rm -r]
|
| Unit |
Page References |
Topics |
| 66 |
• File permissions
• Setuid
• How Unix Maintains File permissions [id, groups, ls -l]
• File modes
|
| Unit |
Page References |
Topics |
| 67 |
• Changing file permissions [chmod]
• Permissions for new files [umask]
• Introduction to links [stat, ls -i]
• Multiple links to the same file
|
| Unit |
Page References |
Topics |
| 68 |
• Creating a new link [ln]
• Symbolic links [ln -s]
• Using symbolic links with directories
|
| Unit |
Page References |
Topics |
| 69 |
• Finding files: Associated with a Unix command [whereis]
• Finding files: Searching a system database [locate]
• Finding files: Searching a directory tree [find]
|
| Unit |
Page References |
Topics |
| 70 |
• The find program: paths
• The find program: tests
• The find program: negating a test
• The find program: file permission error messages
|
| Unit |
Page References |
Topics |
| 71 |
• The find program: actions
• Processing files that have been found [xargs]
|
Section 26: Processes and Job Control
| Unit |
Page References |
Topics |
| 72 |
• How the kernel manages processes
• Forking
|
| Unit |
Page References |
Topics |
| 73 |
• Orphans; abandoned processes
• Distinguishing between parent and child
• The very first process [init]
|
| Unit |
Page References |
Topics |
| 74 |
• Foreground and background processes
• Creating a delay [sleep]
• Job control
|
| Unit |
Page References |
Topics |
| 75 |
• Running a job in the background
• Suspending a job [fg]
• Suspending a shell [suspend]
|
| Unit |
Page References |
Topics |
| 76 |
• Job control vs. multiple windows
• Displaying a list of jobs [jobs]
• Moving a job to the foreground [fg]
• Moving a job to the background [bg]
|
| Unit |
Page References |
Topics |
| 77 |
• Using ps to display process information [ps]
• The ps program: Basic skills
• The ps program: Choosing options
• The ps program: States
|
| Unit |
Page References |
Topics |
| 78 |
• Monitoring system processes [top, prstat]
• Killing a process [kill]
• Sending a signal to a process [kill]
• Daemons
|
Final Exam
|