UNIX with Shell Programming
ISBN: 1-930-360-21-5
Second Edition
By Dr. Andy S. Yao
United Technology Institute, 2001

Table of Contents

1.   Introduction. . . . . . . . . . . . . . . . . . . . . . .1
          Computing System. . . . . . . . . . . . . . . . . . . . . .1
          Operating System. . . . . . . . . . . . . . . . . . . . . .2
          UNIX History. . . . . . . . . . . . . . . . . . . . . . . .2
          UNIX Characteristics. . . . . . . . . . . . . . . . . . . .4
          System Calls. . . . . . . . . . . . . . . . . . . . . . . .4
          UNIX Vendors. . . . . . . . . . . . . . . . . . . . . . . .5
          UNIX Standards. . . . . . . . . . . . . . . . . . . . . . .7
          UNIX Organizations. . . . . . . . . . . . . . . . . . . . .7
          UNIX System Structure . . . . . . . . . . . . . . . . . . .8
                    Kernel . . . . . . . . . . . . . . . . . . . . . . . .8
                    File System. . . . . . . . . . . . . . . . . . . . . .8
                    Commands/Utilities . . . . . . . . . . . . . . . . . .9
                    Process Scheduler. . . . . . . . . . . . . . . . . . .9
                    Shell. . . . . . . . . . . . . . . . . . . . . . . . 10
2.   Getting Started . . . . . . . . . . . . . . . . . . . . 11
          Sign on . . . . . . . . . . . . . . . . . . . . . . . . . 11
          Change Password . . . . . . . . . . . . . . . . . . . . . 12
          Command Syntax. . . . . . . . . . . . . . . . . . . . . . 12
          On-Line Manual Page . . . . . . . . . . . . . . . . . . . 13
          Basic Commands. . . . . . . . . . . . . . . . . . . . . . 14
                    date . . . . . . . . . . . . . . . . . . . . . . . . 14
                    whoami . . . . . . . . . . . . . . . . . . . . . . . 15
                    tty. . . . . . . . . . . . . . . . . . . . . . . . . 15
                    pwd. . . . . . . . . . . . . . . . . . . . . . . . . 15
                    cd . . . . . . . . . . . . . . . . . . . . . . . . . 15
                    who and finger . . . . . . . . . . . . . . . . . . . 15
                    chfn . . . . . . . . . . . . . . . . . . . . . . . . 17
                    uname. . . . . . . . . . . . . . . . . . . . . . . . 17
                    whatis . . . . . . . . . . . . . . . . . . . . . . . 17
                    cal. . . . . . . . . . . . . . . . . . . . . . . . . 17
                    exit . . . . . . . . . . . . . . . . . . . . . . . . 19
                    write and talk . . . . . . . . . . . . . . . . . . . 19
          Review Questions. . . . . . . . . . . . . . . . . . . . . 20

3.   Text Editor . . . . . . . . . . . . . . . . . . . . . . 21
          Line Editor: ed . . . . . . . . . . . . . . . . . . . . . 21
          Review Question . . . . . . . . . . . . . . . . . . . . . 24
          The Full-Screen Editor: vi. . . . . . . . . . . . . . . . 25
          The pico Editor . . . . . . . . . . . . . . . . . . . . . 27

4.   File Manipulation . . . . . . . . . . . . . . . . . . . 28
          UNIX File Types . . . . . . . . . . . . . . . . . . . . . 28
          Input/Output Redirection. . . . . . . . . . . . . . . . . 29
          Basic File Manipulation Commands. . . . . . . . . . . . . 29
                    Display File Contents. . . . . . . . . . . . . . . . 30
                    Copy Files . . . . . . . . . . . . . . . . . . . . . 30
                    Compare Files. . . . . . . . . . . . . . . . . . . . 31
                    Create a Directory . . . . . . . . . . . . . . . . . 32
                    Move a File. . . . . . . . . . . . . . . . . . . . . 32
                    Delete a File or Directory . . . . . . . . . . . . . 32
                    Determine the File Type. . . . . . . . . . . . . . . 33
                    Filer and Pipe . . . . . . . . . . . . . . . . . . . 34
                    File name and Name Substitution Characters . . . . . 35
                    List File Attributes . . . . . . . . . . . . . . . . 36
          File Permission and Mask. . . . . . . . . . . . . . . . . 40
                    Change File Permissions. . . . . . . . . . . . . . . 40
                    Set File Creation Mode . . . . . . . . . . . . . . . 42
          Review Questions. . . . . . . . . . . . . . . . . . . . . 43

5.   Process Management. . . . . . . . . . . . . . . . . . . 44
          Shell Process Life Cycle. . . . . . . . . . . . . . . . . 44
          Program versus Process. . . . . . . . . . . . . . . . . . 45
          Process Scheduler . . . . . . . . . . . . . . . . . . . . 46

          Process Creation and Termination. . . . . . . . . . . .  48
          Process Manipulation Commands . . . . . . . . . . . . .  49
                    Scheduling Processes (cron and at) . . . . . . . . . 54
          Review Questions. . . . . . . . . . . . . . . . . . . . . 56

6.   Shell Programming . . . . . . . . . . . . . . . . . . . 57
          Shell Variables . . . . . . . . . . . . . . . . . . . . . 57
          Shell Script. . . . . . . . . . . . . . . . . . . . . . . 58
          Shell Metachatacters. . . . . . . . . . . . . . . . . . . 61
          Using Quotes. . . . . . . . . . . . . . . . . . . . . . . 62
          Positional Parameters . . . . . . . . . . . . . . . . . . 63
          Shell Interpretation Sequence . . . . . . . . . . . . . . 64
          Shell Statements. . . . . . . . . . . . . . . . . . . . . 65
                    Conditional Statements: if and case. . . . . . . . . 65
                    Relational and Logical Operators . . . . . . . . . . 66
                    Logical Connectors . . . . . . . . . . . . . . . . . 67
          Filter. . . . . . . . . . . . . . . . . . . . . . . . . . 69
                    cut. . . . . . . . . . . . . . . . . . . . . . . . . 69
                    tee. . . . . . . . . . . . . . . . . . . . . . . . . 70
                    sort . . . . . . . . . . . . . . . . . . . . . . . . 71
                    wc . . . . . . . . . . . . . . . . . . . . . . . . . 71
                    tr . . . . . . . . . . . . . . . . . . . . . . . . . 71
                    grep . . . . . . . . . . . . . . . . . . . . . . . . 72
          Setting and Shifting Positional Parameters. . . . . . . . 74
          Keyboard Input. . . . . . . . . . . . . . . . . . . . . . 76
          Loop Statements . . . . . . . . . . . . . . . . . . . . . 78
                    for. . . . . . . . . . . . . . . . . . . . . . . . . 78
                    while. . . . . . . . . . . . . . . . . . . . . . . . 79
                    until. . . . . . . . . . . . . . . . . . . . . . . . 81
          Arithmetic Operations by expr . . . . . . . . . . . . . . 85
          continue and break. . . . . . . . . . . . . . . . . . . . 87
          Error Handling. . . . . . . . . . . . . . . . . . . . . . 89
          Return a Value. . . . . . . . . . . . . . . . . . . . . . 90
          Recursion . . . . . . . . . . . . . . . . . . . . . . . . 92
          Interrupt Signals . . . . . . . . . . . . . . . . . . . . 96
          File Input Operation. . . . . . . . . . . . . . . . . . . 99
          Stream Editor -- sed. . . . . . . . . . . . . . . . . . .103
          Shell Function. . . . . . . . . . . . . . . . . . . . . .106
          Review Questions. . . . . . . . . . . . . . . . . . . . .109

7.   Awk Programming . . . . . . . . . . . . . . . . . . . .114
          What is awk?. . . . . . . . . . . . . . . . . . . . . . .114
          How does awk work?. . . . . . . . . . . . . . . . . . . .114
          awk Variables . . . . . . . . . . . . . . . . . . . . . .115
          Statements. . . . . . . . . . . . . . . . . . . . . . . .116
          Operators . . . . . . . . . . . . . . . . . . . . . . . .116
          Using awk as a Filter . . . . . . . . . . . . . . . . . .117
          Develop awk Scripts . . . . . . . . . . . . . . . . . . .118
          Review Questions. . . . . . . . . . . . . . . . . . . . .133

8.   Perl. . . . . . . . . . . . . . . . . . . . . . . . . .135
          What is Perl? . . . . . . . . . . . . . . . . . . . . . .135
          What can Perl do? . . . . . . . . . . . . . . . . . . . .135
          How does Perl work? . . . . . . . . . . . . . . . . . . .136
          CGI and Perl. . . . . . . . . . . . . . . . . . . . . . .141
          Review Questions. . . . . . . . . . . . . . . . . . . . .143

9.   File System . . . . . . . . . . . . . . . . . . . . . .144
          File Identification . . . . . . . . . . . . . . . . . . .144
          Creating a File/Directory . . . . . . . . . . . . . . . .145
          Retrieving a File/Directory . . . . . . . . . . . . . . .145
          What is a File System . . . . . . . . . . . . . . . . . .146
          Disk Address List . . . . . . . . . . . . . . . . . . . .147
          Link Manipulation . . . . . . . . . . . . . . . . . . . .148
          File System Backup. . . . . . . . . . . . . . . . . . . .153

Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . .158
          Command Summary . . . . . . . . . . . . . . . . . . . . .158