Donation?

Harley Hahn
Home Page

Send a Message
to Harley


A Personal Note
from Harley Hahn

Unix Book
Home Page

SEARCH

List of Chapters

Table of Contents

List of Figures

Chapters...
   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

Glossary

Appendixes...
  A  B  C
  D  E  F
  G  H

Command
Summary...

• Alphabetical
• By category

Unix-Linux
Timeline

Internet
Resources

Errors and
Corrections

Endorsements


INSTRUCTOR
AND STUDENT
MATERIAL...

Home Page
& Overview

Exercises
& Answers

The Unix Model
Curriculum &
Course Outlines

PowerPoint Files
for Teachers

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 print version of Harley Hahn's Guide to Unix.

Section 1: Introduction to Unix

Unit Page
References
   Topics
1 1-3
3-4
4-5
5
  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 9-10
11-12
12-13
  What is an operating system?
  What is the kernel?
  Unix = Kernel + Utilities
Unit Page
References
   Topics
3 18-19
22-28
28-29
35
  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 38-41
 37-38,
+41-43 
43-45
45-46
  Multiprogramming, time-sharing
  Host and terminals paradigm
 
  Terminal rooms, terminal servers
  The console
Unit Page
References
   Topics
5 46-48
48
49-50
50-51
52-52
  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 55-56
56-57
57-59
59-61
61-62
62-63
  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 63-64
66-67
67-69
70
 70-71,
+838-840 
  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 73-75
75-76
78
78-79
  What is a GUI?
  X Window
  Layers of abstraction
  Window manager
Unit Page
References
   Topics
9 79-81
82-85
87-90
  Desktop environment
  KDE and Gnome
  Choosing a Desktop Environment

Section 6: The Unix Work Environment

Unit Page
References
   Topics
10 96-97
97-98
98-101
  The GUI and the CLI (command line interface)
  Logging in and logging out with a GUI
  Runlevels
Unit Page
References
   Topics
11 108-110
110-112
113-116
116
  Multiple desktops/workspaces
  Terminal windows
  Virtual consoles
  The console
Unit Page
References
   Topics
12 118-122
124-125
125-126
126-127
  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 131-134
137-138
138-139
139-142
145-146
  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 147-148
148-149
149-151
153-155
155-157
  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 161-164
164
 164-165,
+841-845 
165-167
168-169
  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 169-170
170-172
175-182
  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 189-190
190-192
192-193
193
  The Unix tradition of teaching yourself
  RTFM
  What is the Unix manual?  [man]
  Man pages
Unit Page
References
   Topics
18 193-196
199-201
202-203
203-204
  Displaying man pages
  Organization
  Section numbers
  Referencing man pages
Unit Page
References
   Topics
19 204-208
208
209-210
210-211
  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 211-213
213-214
214-215
215-216
  The Info system  [info]
  Info and trees
  Starting Info
  Learning about Info

Section 10: Command Syntax

Unit Page
References
   Topics
21 223-224
224-225
225-226
226-227
227-229
  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 229-230
230-231
231-232
232-234
235
235-236
  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 239-240
240-244
244-247
  What is a shell?
  The Bourne shell family  [sh, ksh, bash]
  The C-Shell family  [csh, tcsh]
Unit Page
References
   Topics
24 247-249
249-250
251-253
  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 256-257
257-258
259-262
262-264
  Interactive shells; non-interactive shells
  Environment; processes; variables
  Environment variables; shell variables
  Displaying environment variables  [env, printenv]
Unit Page
References
   Topics
26 264
 264-267,
+846-850 
267-269
269-271
  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  271-273,
+846-850 
273-274
  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 277-279
279-283
283-284
  Metacharacters
  Quoting; escaping
  Strong quotes; weak quotes
Unit Page
References
   Topics
29 284-287
287-289
289-291
292-294
294-296
  Builtin commands  [type]
  External commands
  Search path
  Shell prompt
  Using the value of a variable
Unit Page
References
   Topics
30 296-297
297-299
299-301
  Quoting variables
  Escape character
  Command substitution
Unit Page
References
   Topics
31 301-302
302-308
  Typing commands; making changes
  History list  [fc, history]
Unit Page
References
   Topics
33 309-314
316-322
  Autocompletion
  Aliases  [alias, unalias]

Section 14: Using the Shell: Initialization Files

Unit Page
References
   Topics
33 327-329
329-330
330-331
331-332
332-333
333-334
  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 335
335-336
336-337
337-340
341-343
  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 345-348
 
348-349
349-350
350-352
  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 352-353
353-354
354-355
355-357
358
  Redirecting standard input
  File descriptors
  Redirecting standard error: Bourne Shell family
  Subshells
  Redirecting standard error: C-Shell family
Unit Page
References
   Topics
37 359-360
360-361
362-365
365-367
367-369
370-371
  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 373-374
374-375
375-376
376-377
377-380
  Variations of commands and options
  Filters
  Creating filters
  The problem solving process
  The simplest possible filter  [cat]
Unit Page
References
   Topics
39 380-382
382-383
382-385
391-392
392-393
  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 395-396
396-397
397-399
399-408
424-426
  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 447-450
450-454
455-458
  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 459-461
461-462
463
  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  464-465,
+833-837 
465-466
466-471
  ASCII code
  (Appendix D: The ASCII Code)
  Collating sequences
  Locales
Unit Page
References
   Topics
44 471-473
473-478
482-484
484-486
  Finding duplicate lines  [uniq]
  Merging sorted data from two files  [join]
  Translating characters  [tr]
  Translating unprintable characters
Unit Page
References
   Topics
45 488-490
490-492
492-493
493-494
  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 497-498
502-504
504-505
505
505-506
506-507
  Introduction to regular expressions
  Matching lines
  Matching words
  Matching characters
  Character classes
  Predefined character classes
Unit Page
References
   Topics
47 506-507
507-511
511-514
514-517
  Ranges
  Locales and collating sequences
  Repetition operators
  Understanding complex regular expressions

Mid-term Exam #2

Section 21: Displaying Files

Unit Page
References
   Topics
48 521-524
524-526
525-526
527-529
  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 529-530
534-535
541
541-542
542-544
  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 544-550
550-551
551-555
  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 559-560
565-566
568-570
570-571
  Introduction to the vi text editor  [vi]
  Starting vi
  Command mode; input mode
  Knowing what mode you are in
Unit Page
References
   Topics
52 571
571
572-573
573-574
574-575
575-576
  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 577
577-581
581-582
582-583
  Creating a practice file
  Moving the cursor
  Moving through the editing buffer
  Jumping to a previous location
Unit Page
References
   Topics
54 584-586
586-587
587-589
590-592
592-594
594-597
  Searching for a pattern
  Using line numbers
  Inserting text
  Changing text
  Replacing text
  Deleting text
Unit Page
References
   Topics
55 597-598
598-599
599-601
601-602
608
609
  Undoing or repeating a change
  Recovering deletions
  Moving text
  Copying text
  Copying lines
  Moving lines
Unit Page
References
   Topics
56 608-609
612-613
613-614
619-621
  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 627-628
628-629
630
631
632
632-633
633-634
  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 638-639
639-640
640-641
642
643-647
  Tree-structured filesystem
  Filesystem Hierarchy Standard (FHS)
  Root directory and subdirectories
  Mounting a filesystem  [mount, umount]
  Contents: root directory
Unit Page
References
   Topics
59 647-649
649-650
650-652
653-655
  Contents: /usr directory
  Directories that hold programs
  Home directories
  Virtual file system

Section 24: Working With Directories

Unit Page
References
   Topics
60 659-663
660
663-666
666-669
  Pathnames: absolute, relative
  Working directory
  Pathname abbreviations ( .. . ~ )
  Moving around the directory tree  [cd, pwd]
Unit Page
References
   Topics
61 669-672
672-675
675-676
682-683
  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 683-686
686-687
687
688-690
  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 690-691
697-720
702-703
703-707
  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 715-717
717-720
720-721
721-722
722-723
  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 723
723-724
724-725
725-727
727-729
  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 729-731
731-732
732-735
735-737
  File permissions
  Setuid
  How Unix Maintains File permissions  [id, groups, ls -l]
  File modes
Unit Page
References
   Topics
67 737-738
738-739
740-741
741-742
  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 742-743
744-745
745-747
  Creating a new link  [ln]
  Symbolic links  [ln -s]
  Using symbolic links with directories
Unit Page
References
   Topics
69 747-748
748-750
750-751
  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 751-752
752-755
755-756
756
  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 757-760
760-763
  The find program: actions
  Processing files that have been found  [xargs]

Section 26: Processes and Job Control

Unit Page
References
   Topics
72 767-768
768-770
  How the kernel manages processes
  Forking
Unit Page
References
   Topics
73 771
771-772
772-773
  Orphans; abandoned processes
  Distinguishing between parent and child
  The very first process  [init]
Unit Page
References
   Topics
74 773-774
774-776
777-779
  Foreground and background processes
  Creating a delay  [sleep]
  Job control
Unit Page
References
   Topics
75 779-780
780-782
782-783
  Running a job in the background
  Suspending a job  [fg]
  Suspending a shell  [suspend]
Unit Page
References
   Topics
76 783
784
785-787
787-788
  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 788-789
789-793
793-794
794-797
  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 798-800
804-806
806-808
812-814
  Monitoring system processes  [top, prstat]
  Killing a process  [kill]
  Sending a signal to a process  [kill]
  Daemons

Final Exam

Jump to top of page