TY - BOOK AU - Forouzan,Behrouz A. TI - UNIX and Shell programming : a textbook SN - 0534951597 (pbk. : acidfree) U1 - 005.2/82 PY - 2003/// CY - Pacific Grove, CA PB - Brooks/Cole-Thomson Learning KW - Operating Systems (computers) N1 - Includes index; 1.1 Why UNIX? 3 Portable 3 Multiuser 3 Multitasking 3 Networking 4 Organized File System 4 Device Independence 4 Utilities 4 Services 4 1.2 Computer System 4 Hardware 5 Software 5 The Operating System 6 1.3 The UNIX Environment 6 Personal Environment 6 Time-Sharing Environment 7 Client/Server Environment 7 1.4 UNIX Structure 8 The Kernel 8 The Shell 8 Utilities 9 Applications 10 1.5 Accessing UNIX 10 User ID 10 Passwords 10 Interactive Session 11 1.6 Commands 13 Basic Concepts 13 1.7 Common Commands 15 Date and Time (date) Command 15 Calendar (cal) Command 17 Who's Online (who) Command 18 whoami 20 Change Password (passwd) Command 20 Print Message (echo) Command 21 Online Documentation (man) Conunand 22 Print (Ipr) Command 23 1.8 Other Useful Commands 24 Terminal (tty) Command 24 Clear Screen (clear) Command 25 Set Terminal (stty) Command 25 Record Session (script) Command 27 System Name (uname) Command 28 Calculator (be) Command 29 1.9 Key Terms 32 1.10Tips 32 1. 11 Commands 33 1.12 Summary 34 1.13 Practice Set 35 Review Questions 35 Exercises 36 1.14 Lab Sessions 37 ^asoc m 4 i 2.1 Editor Concepts 41 Line Editors 41 Screen Editors 41 2.2 The vi Editor 42 2.3 Modes 42 Command Mode 43 Text Mode 43 Changing Modes 43 2.4 Commands 44 Add Commands 44 Cursor Move Commands 46 Deletion Commands 50 Join Command 50 Scrolling Commands 51 Undo Commands 53 Saving and Exit Commands 54 2.5 Two Practice Sessions 55 2.6 Key Terms 57 2.7 Tips 57 2.8 Commands 57 2.9 Summary 58 2.10 Practice Set 60 Review Questions 60 Exercises 60 2.11 Lab Sessions 62 Fe^e Systems 6S 3.1 Filenames 65 Wildcards 66 3.2 File Types 68 3.3 Regular Files 69 Text Files 69 Binary Files 69 3.4 Directories 70 Special Directories 70 Paths and Pathnames 71 Relative Pathname Abbreviations 72 3.5 File System Implementation 75 File Systems 76 Directory Contents 77 Links 77 3.6 Operations Unique to Directories 80 Locate Directory (pwd) Command 80 List Directory (Is) Command 81 Make Directory (mkdir) Command 86 Change Directory (cd) Command 88 Remove Directory (rmdir) Command 89 3.7 Operations Unique to Regular Files 89 ■ Create File 89 Edit File 89 Display File (more) Command 90 Print File 92 3.8 Operations Common to Both 93 Copy (cp) Command 93 Move (mv) Command 100 Rename (mv) Command 102 Link (In) Command 102 Remove (rm) Command 106 3.9 Key Terms 112 3.10 Tips 112 3.11 Commands 113 3.12 Summary 114 3.13 Practice Set 115 Review Questions 115 Exercises 116 3.14 Lab Sessions 119 Chapter 4 Security and FiSe Perai^ss9©8? ! 11 4.1 Users and Groups 121 Group (groups) Command 121 4.2 Security Levels 122 System Security 122 Permission Codes 123 Checking Permissions 126 4.3 Changing Permissions 126^ Symbolic Codes 127 Octal Codes 128 Option 130 4.4 User Masks 131 Basic Concept 131 User Mask (umask) Command 132 4.5 Changing Ownership and Group 132 Change Ownership (chown) Command 133 Change Group (chgrp) Command 133 4.6KeyTerms 134 4.7 Commands 134 4.8 Tips 135 4.9 Summary 135 4.10 Practice Sets 136 Review Questions 136 Exercises 138 4.11 Lab Sessions 140 SgntiTsdiBfStk&in} to Sii'33S^-i 5.1 UNIX Session 144 Login Shell Verification 145 Current Shell Verification 145 Shell Relationships 145 Logout 146 5.2 Standard Streams 146 5.3 Redirection 147 Redirecting Input 147 Redirecting Output 148 Redirecting Errors 149 5.4 Pipes 151 5.5 tee Command 153 5.6 Command Execution 154 Sequenced Commands 155 Grouped Commands 155 Chained Commands 156 Conditional Commands 156 5.7 Command-Line Editing 156 Command-Line Editing Concept 157 Editor Selection 157 vi Command-Line Editor 157 Using the Conrunand-Line Editor 159 5.8 Quotes 159 Backslash 160 Double Quotes 161 Single Quotes 163 5.9 Command Substitution 164 5.10 Job Control 165 Jobs 165 Foreground and Background Jobs 165 jobsConunand 168 Process ID 170 5.11 Aliases 170 Aliases in the Kom and Bash Shells 171 Aliases in the C Shell 174 Alias Summary 176 5.12 Variables 176 User-Defined Variables 176 Predefined Variables 177 Storing Data in Variables 177 Accessing a Variable 178 5.13 Predefined Variables 178 Handling Variables 181 5.14 Options 183 Handling Options 184 5.15 Shell/Environment Customization 185 Temporary Customization 185 Permanent Customization 185 Summary 187 5.16 Key Terms 188 5.17 Tips 188 5.18 Commands 189 5.19 Summary 191 5.20 Practice Set K92 Review Questions 192 Exercises 193 5.21 Lab Sessions 197 COnapteif 6 FiSteE's f! 6.1 Filters and Pipes 202 6.2 Concatenating Files 202 Catenate (cat) Command 202 cat Options 205 6.3 Display Beginning and End of Files 207 head Command 207 tail Command 208 6.4 Cut and Paste 210 cut Command 210 paste Command 214 6.5 Sorting 217 sort Command 217 Sort by Lines 217 Sdrt by Fields 219 Options 222 Multiple-Pass Sorting 227 6.6 Translating Characters 230 tr Command 230 Simple Translate 230 Nonmatching Translate Strings 231 Delete Characters 231 Squeeze Output 231 Complement 232 6.7 Flies with Duplicate Lines 233 uniqConunand 233 Output Format 234 Skip Leading Fields 236 Skip Leading Characters 236 6.8 Count Characters, Words, or Lines 237 wc Command 237 6.9 Comparing Flies 238 Compare (cmp) Command 238 Difference (diff) Command 240 Common (conun) Command 243 6.10 Key Terms 244 6.1 i Tips 244 6.12 Commands 245 6.13 Summary 246 6.14 Practice Set 247 Review Questions 247 Exercises 248 4.15 Lab Sessions 252 Ciiapter 1 €©mBiniim^Q€ait3®ins %%1 7.1 User Communication 257 talk Command 257 write Conunand 260 7.2 Electronic Mail 262 Mail Addresses 262 Mail Mode 265 mail Command 265 Send Mail 265 Read Mode 270 Read Mail Options 275 Mail Files 275 7.3 Remote Access 276 The telnet Concept 276 Connecting to the Remote Host 278 7.4 File Transfer 279 The ftp Command 279 Establishing ftp Connection 280 Closing an ftp Connection 280 Transferring Files 281 7.5 Key Terms 282 7.6 Commands 283 7.7 Tips 283 7.8 Summary 284 7.9 Practice Set 285 Review Questions 285 Exercises 286 7.10 Lab Sessions 287 CBnaipter ® vi GX 19 D 8.1 vl Editor 292 ^ Commands 292 Conunand Categories 293 8.2 Local Commands in vi 293 Insert Text Conunands (i, I) 293 Append Text Comniands (a. A) 293 Newline Conunands (o, O) 294 Replace Text Commands (r, R) 294 Substitute Text Conunands (s, S) 295 * Delete Character Conunands (x, X) 295 Mark Text Command (m) 296 Change Case Command (~) 296 Put Commands (p, ?) 297 Join Conunand (J) 298 8.3 Range Commands in vi 299 Text Object 299 Text Object Conunands 304 Yank Conunand 306 Range Command Summary 307 8.4 Global Commands in vi 307 Scroll Commands 307 Undo Commands 307 Repeat Command 308 Screen Regeneration Commands 308 Display Document Status Line 308 Save and Exit Commands 309 8.5 Rearrange Text in vi 309 Move Text. 309 Copy Text 309 Named Buffers 310 8.6 ex Editor 311 ex Instruction Format 311 Addresses 312 Commands 316 8.7 Key Terms 320 8.8 Tips 320 8.9 Commands 321 8.10 Summary 323 8.11 Practice Set 324 Review Questions 324 Exercises 325 8.12 Lab Sessions 326 Chaptcir 9 Kegaaiar 33 B 9.1 Atoms 331 Single Character 332 Dot 332 Class 333 Anchors 334 Back References 335 9.2 Operators 335 Sequence 335 Alternation 337 Repetition 337 Group Operator 341 Save 342 9.3 Key Terms 343 9.4 Tips 343 9.5 Summary 344 9.6 Practice Set 344 Review Questions 344 Exercises 345 CSnapte:." 1 © giy-ejn) 10.1 Operation 351 grep flowchart 352 grep Operation Example 352 10.2 grep Family 354 grep 355 Fast grep 356 Extended grep 356 10.3 Examples 359 10.4 Searching for File Content 362 Search a Specific Directory 362 Search All Directories in a Path 363 10.5 Key Terms 364 10.6 Tips 364 10.7 Commands 365 10.8 Summary 365 10.9 Practice Set 366 / Review Questions 366 Exercises 366 10.10 Lab Sessions 368 CBuiapjteir B i sesi 373 11.1 Scripts 373 Script Formats 374 Instruction Format 374 Comments 374 11.2 Operation 375 11.3 Addresses 377 Single-Line Addresses 378 Set-of-Line Addresses 379 Range Addresses 380 Nested Addresses 381 11.4 Commands 381 Line Number Command 381 Modify Commands 382 Substitute Command (s) 386 Substitute Flags 39! Transform Command (y) 393 Input and Output Commands 394 File Commands 399 Branch Commands 401 Hold Space Commands 404 Quit 405 11.5 Applications 406 Delete Lines 406 Delete Text 408 11.6 grep and sed 409 Lines That Match a Regular Expression 409 Lines That Do Not Match a Regular Expression 410 11.7 Key Terms 411 11.8 Tips 411 11.9 Commands 412 11.10 Summary 413 11.11 Practice Set 414 Review Questions 414 Exercises 416 11.12 Lab Sessions 421 Chapter 12 awk 42S 12.1 Execution 425 12.2 Fields and Records 426 Buffers and Variables 426 Variables 427 12.3 Scripts 428 Initialization Processing (BEGIN) 428 Body Processing 429 End Processing (END) 429 12.4 Operation 429 12.5 Patterns 431 Simple Patterns 432 Nothing (No Pattern) 436 Range Patterns 436 12.6 Actions 438 Expression Statement 439 Output Statements 440 Decision Statements 444 Control Actions 446 Loops 449 12.7 Associative Arrays 453 Processing Arrays 454 Delete Array Entry 459 12.8 String Functions 459 Length 460 Index 460 Substring 461 Split 463 Substitution 464 Global Substitution 465 Match 466 ToupperandToIower 466 12.9 Mathematical Functions 467 12.10 User-Defined Functions 468 12.11 Using System Commands in awk 469 Using Pipes 469 Using the System Function 471 12.12 Applications 472 Phone List 472 Count Lines and Words 473 Print Line Following a Blank Line 473 Print Line Before a Blank Line 474 Merge Files 474 12.13 awk and grep 475 Find the Line That Matches a Regular Expression 475 Find the Line That Does Not Match a Regular Expression 476 12.14 sed and awk 477 Print Line Numbers 477 Modify a Line 478 Substitute 479 Transform 479 Input/Output 480 Files 480 Branch 480 Quit 480 12.15 Key Terms 481 12.16 Tips 481 12.17 Commands 482 12.18 Summary 483 12.19 Practice Set 484 Review Questions 484 Exercises 486 12.20 Lab Sessions 488 Ctepter 13 13.1 Kom Shell Features 499 Kom Shell Sessions 499 Standard Streams 499 Redirection 499 Pipes 500 tee Command 500 Combining Commands 501 Command-Line Editing 501 Quotes 501 Conunand Substitution 501 Job Control 501 Aliases 502 13.2 Two Special Files 502 Trash File (/dev/null) 502 Terminal File (/dev/tty) 503 13.3 Variables 504 User-Defined Variables 504 Predefined Variables 505 Storing Values in Variables 505 Accessing the Value of a Variable 506 Null Variables 507 Unsetting a Variable 508 Storing Filenames 508 Storing File Contents 508 Storing Commands in a Variable 509 Read-Only Variables 509 Exporting Variables 510 Variable Attribute: The typeset Conunand 512 13.4 Output 514 13.5 Input 516 Reading Word by Word 517 Reading Line by Line 517 Reading from a File 518 13.6 Exit Status of a Command 518 13.7 eval Command 519 13.8 Environmental Variables 521 Change Directory Path (CDPATH) 522 ffistory File Path (HISTFILE) 522 Home Path (HOME) 523 Login Name (LOGNAME) 523 Mailbox Pathname (MAIL) 523 Mail Check Interval (MAILCHECK) -§§4 Incoming Mail Paths (MAILPATH) 524 Directory Search Paths (PATH) 524 Primary Prompt (PSI) 524 Secondary Prompt (PS2) 526 Third Prompt (PS3) 526 Fourth Prompt (PS4) 526 User Input Default Variable (REPLY) 526 Login Shell Path (SHELL) 527 Terminal Description (TERM) 527 Handling Environmental Variables 527 13.9 Options 528 Export All (allexport) 528 Command-Line Editor (emacs and vi) 528 Ignore End-of-File (ignoreeof) 529 No Clobber in Redirection (noclobber) 529 No Execute (noexec) 529 No Global (noglob) 529 Verbosity (verbose) 529 Execute Trace (xtrace) 530 Handling Options 530 13.10 Startup Scripts 530 System Profile File 530 Personal Profile File 531 Environment File 531 Startup Process 532 13.11 Command History 532 History File 532 History Command 533 Redo Command (r) 535 Substitution in Redo Command 536 13.12 Command Execution Process 536 Execution Steps 536 Command Execution Example 537 13.13 Key Terms 537 13.14 Tips 538 13. f 5 Commands 539 13.16 Summary 540 13.17 Practice Set 541 Review Questions 541 Exercises 542 13.18 Lab Sessions 544 CilDapteir 04 toirra SMIl 14.1 Basic Script Concepts 547 Script Components 547 Making Scripts Executable 549 Executing the Script 549 Script Termination (exit Command) 553 Arguments and Positional Parameters 554 14.2 Expressions 555 Mathematical Expressions 556 ' Relational Expressions 557 File Expressions 559 Logical Expressions 560 Expression Type Summary 562 14.3 Decisions: Making Selections 562 if-then-else 562 Multiway Selection 567 14.4 Repetition 571 Command-Controlled and List-Controlled Loops 571 Background Loops 580 Loop Redirection 580 14.5 Special Parameters and Variables 585 Special Parameters 585 Special Variables 588 Special Parameter and Variable Summary 588 14.6 Changing Positional Parameters 589 shift Command 591 14.7 Argument Validation 593 Number of Arguments Validation 593 Type of Argument Validation 594 14.8 Debugging Scripts 597 Debug Options Included in the Script 597 Debug Options on the Command Line 598 14.9 Script Examples 601 Cat 601 Copy 603 14.10 Key Terms 604 14.11 Tips 605 14.12 Commands 605 14.13 Summary 607 14.14 Practice Set 608 Review Questions 608 Exercises 609 14.15 Lab Sessions 613 C&napiseir IS $3^eSi P'rfSgrammoBig 6 8 7 15.1 Variable Evaluation and Substitution 617 Variabje Evaluation 617 Variable Substitution 618 15.2 String Manipulation 622 Compress Strings 622 String L.ength 623 Locating a Substring in a String 624 Extraa Substnng 625 Stripping Strings 626 Using Other Utilities 627 15.3 Here Document 628 15.4 Functions 629 Writing Functions 629 Returning Values 631 Comparing Strings 632 Functions in Files 633 15.5 Arrays 635 15.6 Signals 636 Signal Types 636 Response to Signals 637 trap Command 638 15.7 Built-in Commands 639 Sleep Command 640 Dot Command 641 15.8 Scripting Techniques 641 Reading Strings 641 User Interaction 642 Parsing Options 644 Parsing Pathnames 648 Opening and Closing Files 651 15.9 Shell Environment and Script 655 15.10 Script Examples 656 Calculate 656 Reverse 658 Add Column 659 15.11 Key Terms 661 15.12 Tips 661 15.13 Commands 662 15.14 Summary 663 15.15 Practice Set 664 Review Questions 664 Exercises 665 15.16 Lab Sessions 666 " t ;' ■ C i 16.1 C Shell Features .671 C Shell Sessions 671 Standard Streams 671 Redirection 671 Pipes 672 tee Command 672 Combining Commands 673 Command-Line Editing 673 Quotes 673 Command Substitution 673 Job Control 674 Aliases in the C Shell 674 16.2 Two Special Files 676 Trash File (/dev/null) 676 Terminal File (/dev/tty) 677 16.3 Variables 679 User-Defined Variables 679 Predefined Variables 679 Storing Values in Variables 680 Accessing the Value of a Variable 681 Null Variables 681 Unsetting a Variable 682 Storing Filenames 682 Storing File Contents 683 Storing Conunands in a Variable 683 Exporting Variables 684 16.4 Output 686 16.5 Input 688 Reading Line by Line 688 Reading Word by Word 688 16.6 Exit Status of a Command 688 16.7 eval Command 689 16.8 Environmental Variables 690 Handling Environmental Variables 694 16.9 On-Off Variables 695 Handling On-Off Variables 697 16.10 Startup and Shutdown Scripts 697 System Startup Files 698 Personal Startup Files 698 Startup Process 698 Shutdown Files 698 16.11 Command History 699 History File 699 History Command 699 Reexecuting Previous Commands 700 Substitute and Reexecute 701 Using Arguments from Previous Command 702 History Modifier 702 Pathname Modifier 703 History Command Summary 703 16.12 Command Execution Scripts 704 Execution Steps 704 Command Execution Example 70S 16.13 Key Terms 706 16.14 Tips 706 16.15 Commands 707 16.16 Summary 707 16.17 Practice Set 709 Review Questions 709 Exercises 710 16.18 Lab Sessions 711 € SlhieOg 1S S 17.1 Basic Script Concepts 715 Script Components 715 Making Scripts Executable 717 Executing the Script 717 Script Termination (exit Command) 72.1 Arguments and Positional Parameters 722 17.2 Expressions 723 Mathematical Expressions 724 Relational Exjpressioiis 725 File Expressions 726 Logical Expressions 727 i7;3 Decisions: Making Selections 728 if-then-else 728 Multiway Selection 732 17.4 Repetition 736 C Shell Loops 736 17.5 Special Parameters 742 Script Name ($0) 743 Number of Arguments ($#argv) 743 All Parameters ($argv) 743 Special Parameter Summary 744 17.6 Changing Positional Parameters 74 shift Command 746 17.7 Argument Validation 747 Number of Arguments Validation 748 Type of Argument Validation 749 17.8 Debugging Scripts 752 Debug Options Included in the Script 752 Debug Options on the Command Line 753 17.9 Script Examples 756 Copy 756 17.10 Key Terms 758 17.11 Tips 758 17.12 Commands 759 17.13 Summary 760 17.14 Practice Set 761 Review Questions 761 Exercises 761 17.15 Lab Sessions 764 CBiapteif fl B C SlaelQ Pr@graflW3maiR!g 18.1 Variable Evaluation 769 • 18.2 String Manipulation 769 Compress Strings 770 Using Other Utilities 771 18.3 Here Document 772 18.4 Signals 773 Signal Types 773 Response to Signals 774 On Interrupt Command 774 18.5 Built-in Commands 775 Sleep Command 776 Source Command 111 18.6 Scripting Techniques 777 Reading Strings 778 User Interaction 778 Parsing Pathnames 779 18.7 Shell Environment and Script 780 18.8 Arrays 781 Creating an Array 782 Parsing Input 783 18.9 Script Examples 784 Simulate find Command 784 General Ledger System 786 Eliminate Duplicates 789 18.10 Key Terms 790 18.11 Tips 790 18.12 Commands 791 18.13 Summary 791 18.14 Practice Set 792 Review Questions 792 Exercises 792 18.15 Lab Sessions 793 ER -