Log In
Or create an account -> 
Imperial Library
  • Home
  • About
  • News
  • Upload
  • Forum
  • Help
  • Login/SignUp

Index
UNIX Power Tools, 3rd Edition
SPECIAL OFFER: Upgrade this ebook with O’Reilly A Note Regarding Supplemental Files How to Use This Book Preface
A Book for Browsing Like an Almanac Like a News Magazine Like a Hypertext Database Programs on the Web About Unix Versions Cross-References What's New in the Third Edition Typefaces and Other Conventions The Authors The Fine Print Request for Comments Acknowledgments for the First Edition Acknowledgments for the Second Edition Acknowledgments for the Third Edition
I. Basic Unix Environment
1. Introduction
1.1. What's Special About Unix? 1.2. Power Grows on You 1.3. The Core of Unix 1.4. Communication with Unix 1.5. Programs Are Designed to Work Together 1.6. There Are Many Shells 1.7. Which Shell Am I Running? 1.8. Anyone Can Program the Shell 1.9. Internal and External Commands 1.10. The Kernel and Daemons 1.11. Filenames 1.12. Filename Extensions 1.13. Wildcards 1.14. The Tree Structure of the Filesystem 1.15. Your Home Directory 1.16. Making Pathnames 1.17. File Access Permissions 1.18. The Superuser (Root) 1.19. When Is a File Not a File? 1.20. Scripting 1.21. Unix Networking and Communications 1.22. The X Window System
2. Getting Help
2.1. The man Command 2.2. whatis: One-Line Command Summaries 2.3. whereis: Finding Where a Command Is Located 2.4. Searching Online Manual Pages 2.5. How Unix Systems Remember Their Names 2.6. Which Version Am I Using? 2.7. What tty Am I On? 2.8. Who's On? 2.9. The info Command
II. Customizing Your Environment
3. Setting Up Your Unix Shell
3.1. What Happens When You Log In 3.2. The Mac OS X Terminal Application 3.3. Shell Setup Files — Which, Where, and Why 3.4. Login Shells, Interactive Shells
3.4.1. Login Shells 3.4.2. Interactive Shells
3.5. What Goes in Shell Setup Files? 3.6. Tip for Changing Account Setup: Keep a Shell Ready 3.7. Use Absolute Pathnames in Shell Setup Files 3.8. Setup Files Aren't Read When You Want? 3.9. Gotchas in set prompt Test 3.10. Automatic Setups for Different Terminals 3.11. Terminal Setup: Testing TERM 3.12. Terminal Setup: Testing Remote Hostname and X Display 3.13. Terminal Setup: Testing Port 3.14. Terminal Setup: Testing Environment Variables 3.15. Terminal Setup: Searching Terminal Table 3.16. Terminal Setup: Testing Window Size 3.17. Terminal Setup: Setting and Testing Window Name 3.18. A .cshrc.$HOST File for Per Host Setup 3.19. Making a "Login" Shell 3.20. RC Files 3.21. Make Your Own Manpages Without Learning troff 3.22. Writing a Simple Manpage with the -man Macros
4. Interacting with Your Environment
4.1. Basics of Setting the Prompt 4.2. Static Prompts 4.3. Dynamic Prompts 4.4. Simulating Dynamic Prompts 4.5. C-Shell Prompt Causes Problems in vi, rsh, etc. 4.6. Faster Prompt Setting with Built-ins 4.7. Multiline Shell Prompts 4.8. Session Info in Window Title or Status Line 4.9. A "Menu Prompt" for Naive Users 4.10. Highlighting and Color in Shell Prompts 4.11. Right-Side Prompts 4.12. Show Subshell Level with $SHLVL 4.13. What Good Is a Blank Shell Prompt? 4.14. dirs in Your Prompt: Better Than $cwd 4.15. External Commands Send Signals to Set Variables 4.16. Preprompt, Pre-execution, and Periodic Commands 4.17. Running Commands When You Log Out 4.18. Running Commands at Bourne/Korn Shell Logout 4.19. Stop Accidental Bourne-Shell Logouts
5. Getting the Most out of Terminals, xterm, and X Windows
5.1. There's a Lot to Know About Terminals 5.2. The Idea of a Terminal Database 5.3. Setting the Terminal Type When You Log In 5.4. Querying Your Terminal Type: qterm 5.5. Querying Your xterm Size: resize 5.6. Checklist: Terminal Hangs When I Log In
5.6.1. Output Stopped? 5.6.2. Job Stopped? 5.6.3. Program Waiting for Input? 5.6.4. Stalled Data Connection? 5.6.5. Aborting Programs
5.7. Find Out Terminal Settings with stty 5.8. Setting Your Erase, Kill, and Interrupt Characters 5.9. Working with xterm and Friends 5.10. Login xterms and rxvts 5.11. Working with Scrollbars 5.12. How Many Lines to Save? 5.13. Simple Copy and Paste in xterm 5.14. Defining What Makes Up a Word for Selection Purposes 5.15. Setting the Titlebar and Icon Text 5.16. The Simple Way to Pick a Font 5.17. The xterm Menus 5.18. Changing Fonts Dynamically
5.18.1. VT Fonts Menu 5.18.2. Enabling Escape Sequence and Selection
5.19. Working with xclipboard 5.20. Problems with Large Selections 5.21. Tips for Copy and Paste Between Windows 5.22. Running a Single Command with xterm -e 5.23. Don't Quote Arguments to xterm -e
6. Your X Environment
6.1. Defining Keys and Button Presses with xmodmap 6.2. Using xev to Learn Keysym Mappings 6.3. X Resource Syntax 6.4. X Event Translations 6.5. Setting X Resources: Overview 6.6. Setting Resources with the -xrm Option 6.7. How -name Affects Resources 6.8. Setting Resources with xrdb 6.9. Listing the Current Resources for a Client: appres 6.10. Starting Remote X Clients
6.10.1. Starting Remote X Clients from Interactive Logins 6.10.2. Starting a Remote Client with rsh and ssh
III. Working with Files and Directories
7. Directory Organization
7.1. What? Me, Organized? 7.2. Many Homes 7.3. Access to Directories 7.4. A bin Directory for Your Programs and Scripts 7.5. Private (Personal) Directories 7.6. Naming Files 7.7. Make More Directories! 7.8. Making Directories Made Easier
8. Directories and Files
8.1. Everything but the find Command 8.2. The Three Unix File Times 8.3. Finding Oldest or Newest Files with ls -t and ls -u 8.4. List All Subdirectories with ls -R 8.5. The ls -d Option 8.6. Color ls
8.6.1. Trying It 8.6.2. Configuring It 8.6.3. The -- color Option 8.6.4. Another color ls
8.7. Some GNU ls Features 8.8. A csh Alias to List Recently Changed Files 8.9. Showing Hidden Files with ls -A and -a 8.10. Useful ls Aliases 8.11. Can't Access a File? Look for Spaces in the Name 8.12. Showing Nonprintable Characters in Filenames 8.13. Counting Files by Types 8.14. Listing Files by Age and Size 8.15. newer: Print the Name of the Newest File 8.16. oldlinks: Find Unconnected Symbolic Links 8.17. Picking a Unique Filename Automatically
9. Finding Files with find
9.1. How to Use find 9.2. Delving Through a Deep Directory Tree 9.3. Don't Forget -print 9.4. Looking for Files with Particular Names 9.5. Searching for Old Files 9.6. Be an Expert on find Search Operators 9.7. The Times That find Finds 9.8. Exact File-Time Comparisons 9.9. Running Commands on What You Find 9.10. Using -exec to Create Custom Tests 9.11. Custom -exec Tests Applied 9.12. Finding Many Things with One Command 9.13. Searching for Files by Type 9.14. Searching for Files by Size 9.15. Searching for Files by Permission 9.16. Searching by Owner and Group 9.17. Duplicating a Directory Tree 9.18. Using "Fast find" Databases 9.19. Wildcards with "Fast find" Database 9.20. Finding Files (Much) Faster with a find Database 9.21. grepping a Directory Tree 9.22. lookfor: Which File Has That Word? 9.23. Using Shell Arrays to Browse Directories
9.23.1. Using the Stored Lists 9.23.2. Expanding Ranges
9.24. Finding the (Hard) Links to a File 9.25. Finding Files with -prune 9.26. Quick finds in the Current Directory 9.27. Skipping Parts of a Tree in find 9.28. Keeping find from Searching Networked Filesystem
10. Linking, Renaming, and Copying Files
10.1. What's So Complicated About Copying Files 10.2. What's Really in a Directory? 10.3. Files with Two or More Names 10.4. More About Links
10.4.1. Differences Between Hard and Symbolic Links 10.4.2. Links to a Directory
10.5. Creating and Removing Links 10.6. Stale Symbolic Links 10.7. Linking Directories 10.8. Showing the Actual Filenames for Symbolic Links 10.9. Renaming, Copying, or Comparing a Set of Files 10.10. Renaming a List of Files Interactively 10.11. One More Way to Do It 10.12. Copying Directory Trees with cp -r 10.13. Copying Directory Trees with tar and Pipes
11. Comparing Files
11.1. Checking Differences with diff 11.2. Comparing Three Different Versions with diff3 11.3. Context diffs 11.4. Side-by-Side diffs: sdiff 11.5. Choosing Sides with sdiff 11.6. Problems with diff and Tabstops 11.7. cmp and diff 11.8. Comparing Two Files with comm 11.9. More Friendly comm Output 11.10. make Isn't Just for Programmers! 11.11. Even More Uses for make
12. Showing What's in a File
12.1. Cracking the Nut 12.2. What Good Is a cat? 12.3. "less" is More 12.4. Show Nonprinting Characters with cat -v or od -c 12.5. What's in That Whitespace? 12.6. Finding File Types 12.7. Squash Extra Blank Lines 12.8. How to Look at the End of a File: tail 12.9. Finer Control on tail 12.10. How to Look at Files as They Grow 12.11. GNU tail File Following 12.12. Printing the Top of a File 12.13. Numbering Lines
13. Searching Through Files
13.1. Different Versions of grep 13.2. Searching for Text with grep 13.3. Finding Text That Doesn't Match 13.4. Extended Searching for Text with egrep 13.5. grepping for a List of Patterns 13.6. Approximate grep: agrep 13.7. Search RCS Files with rcsgrep
13.7.1. rcsgrep, rcsegrep, rcsfgrep 13.7.2. rcsegrep.fast
13.8. GNU Context greps 13.9. A Multiline Context grep Using sed 13.10. Compound Searches 13.11. Narrowing a Search Quickly 13.12. Faking Case-Insensitive Searches 13.13. Finding a Character in a Column 13.14. Fast Searches and Spelling Checks with "look" 13.15. Finding Words Inside Binary Files 13.16. A Highlighting grep
14. Removing Files
14.1. The Cycle of Creation and Destruction 14.2. How Unix Keeps Track of Files: Inodes 14.3. rm and Its Dangers 14.4. Tricks for Making rm Safer 14.5. Answer "Yes" or "No" Forever with yes 14.6. Remove Some, Leave Some 14.7. A Faster Way to Remove Files Interactively 14.8. Safer File Deletion in Some Directories 14.9. Safe Delete: Pros and Cons 14.10. Deletion with Prejudice: rm -f 14.11. Deleting Files with Odd Names 14.12. Using Wildcards to Delete Files with Strange Names 14.13. Handling a Filename Starting with a Dash (-) 14.14. Using unlink to Remove a File with a Strange Name 14.15. Removing a Strange File by its i-number 14.16. Problems Deleting Directories 14.17. Deleting Stale Files 14.18. Removing Every File but One 14.19. Using find to Clear Out Unneeded Files
15. Optimizing Disk Space
15.1. Disk Space Is Cheap 15.2. Instead of Removing a File, Empty It 15.3. Save Space with "Bit Bucket" Log Files and Mailboxes 15.4. Save Space with a Link 15.5. Limiting File Sizes
15.5.1. limit and ulimit 15.5.2. Other Ideas
15.6. Compressing Files to Save Space 15.7. Save Space: tar and compress a Directory Tree 15.8. How Much Disk Space? 15.9. Compressing a Directory Tree: Fine-Tuning 15.10. Save Space in Executable Files with strip 15.11. Disk Quotas
IV. Basic Editing
16. Spell Checking, Word Counting, and Textual Analysis
16.1. The Unix spell Command 16.2. Check Spelling Interactively with ispell 16.3. How Do I Spell That Word? 16.4. Inside spell 16.5. Adding Words to ispell's Dictionary 16.6. Counting Lines, Words, and Characters: wc 16.7. Find a a Doubled Word 16.8. Looking for Closure 16.9. Just the Words, Please
17. vi Tips and Tricks
17.1. The vi Editor: Why So Much Material? 17.2. What We Cover 17.3. Editing Multiple Files with vi 17.4. Edits Between Files 17.5. Local Settings for vi 17.6. Using Buffers to Move or Copy Text 17.7. Get Back What You Deleted with Numbered Buffers 17.8. Using Search Patterns and Global Commands
17.8.1. Global Searches
17.9. Confirming Substitutions in vi 17.10. Keep Your Original File, Write to a New File 17.11. Saving Part of a File 17.12. Appending to an Existing File 17.13. Moving Blocks of Text by Patterns 17.14. Useful Global Commands (with Pattern Matches) 17.15. Counting Occurrences; Stopping Search Wraps 17.16. Capitalizing Every Word on a Line 17.17. Per-File Setups in Separate Files 17.18. Filtering Text Through a Unix Command 17.19. vi File Recovery Versus Networked Filesystems 17.20. Be Careful with vi -r Recovered Buffers 17.21. Shell Escapes: Running One UnixCommand While Using Another 17.22. vi Compound Searches 17.23. vi Word Abbreviation 17.24. Using vi Abbreviations as Commands (Cut and Paste Between vi's) 17.25. Fixing Typos with vi Abbreviations 17.26. vi Line Commands Versus Character Commands 17.27. Out of Temporary Space? Use Another Directory 17.28. Neatening Lines 17.29. Finding Your Place with Undo 17.30. Setting Up vi with the .exrc File
18. Creating Custom Commands in vi
18.1. Why Type More Than You Have To? 18.2. Save Time and Typing with the vi map Commands
18.2.1. Command Mode Maps 18.2.2. Text-Input Mode Maps
18.3. What You Lose When You Use map! 18.4. vi @-Functions
18.4.1. Defining and Using Simple @-Functions 18.4.2. Combining @-Functions 18.4.3. Reusing a Definition 18.4.4. Newlines in an @-Function
18.5. Keymaps for Pasting into a Window Running vi 18.6. Protecting Keys from Interpretation by ex 18.7. Maps for Repeated Edits 18.8. More Examples of Mapping Keys in vi 18.9. Repeating a vi Keymap 18.10. Typing in Uppercase Without CAPS LOCK 18.11. Text-Input Mode Cursor Motion with No Arrow Keys 18.12. Don't Lose Important Functions with vi Maps: Use noremap 18.13. vi Macro for Splitting Long Lines 18.14. File-Backup Macros
19. GNU Emacs
19.1. Emacs: The Other Editor 19.2. Emacs Features: A Laundry List 19.3. Customizations and How to Avoid Them 19.4. Backup and Auto-Save Files 19.5. Putting Emacs in Overwrite Mode 19.6. Command Completion 19.7. Mike's Favorite Timesavers 19.8. Rational Searches 19.9. Unset PWD Before Using Emacs 19.10. Inserting Binary Characters into Files 19.11. Using Word-Abbreviation Mode
19.11.1. Trying Word Abbreviations for One Session 19.11.2. Making Word Abbreviations Part of Your Startup
19.12. Directories for Emacs Hacks 19.13. An Absurd Amusement
20. Batch Editing
20.1. Why Line Editors Aren't Dinosaurs 20.2. Writing Editing Scripts 20.3. Line Addressing 20.4. Useful ex Commands 20.5. Running Editing Scripts Within vi 20.6. Change Many Files by Editing Just One 20.7. ed/ex Batch Edits: A Typical Example 20.8. Batch Editing Gotcha: Editors Fail on Big Files 20.9. patch: Generalized Updating of Files That Differ 20.10. Quick Reference: awk
20.10.1. Command-Line Syntax 20.10.2. Patterns and Procedures
20.10.2.1. Patterns 20.10.2.2. Procedures 20.10.2.3. Simple pattern-procedure examples
20.10.3. awk System Variables 20.10.4. Operators 20.10.5. Variables and Array Assignments 20.10.6. Group Listing of awk Commands 20.10.7. Alphabetical Summary of Commands
20.11. Versions of awk
21. You Can't Quite Call This Editing
21.1. And Why Not? 21.2. Neatening Text with fmt 21.3. Alternatives to fmt 21.4. Clean Up Program Comment Blocks
21.4.1. The recomment Script 21.4.2. fmt -p
21.5. Remove Mail/News Headers with behead 21.6. Low-Level File Butchery with dd 21.7. offset: Indent Text 21.8. Centering Lines in a File 21.9. Splitting Files at Fixed Points: split 21.10. Splitting Files by Context: csplit 21.11. Hacking on Characters with tr 21.12. Encoding "Binary" Files into ASCII
21.12.1. uuencoding 21.12.2. MIME Encoding
21.13. Text Conversion with dd 21.14. Cutting Columns or Fields 21.15. Making Text in Columns with pr
21.15.1. One File per Column: -m 21.15.2. One File, Several Columns: -number 21.15.3. Order Lines Across Columns: -l
21.16. Make Columns Automatically with column 21.17. Straightening Jagged Columns 21.18. Pasting Things in Columns 21.19. Joining Lines with join 21.20. What Is (or Isn't) Unique? 21.21. Rotating Text
22. Sorting
22.1. Putting Things in Order 22.2. Sort Fields: How sort Sorts 22.3. Changing the sort Field Delimiter 22.4. Confusion with Whitespace Field Delimiters 22.5. Alphabetic and Numeric Sorting 22.6. Miscellaneous sort Hints
22.6.1. Dealing with Repeated Lines 22.6.2. Ignoring Blanks 22.6.3. Case-Insensitive Sorts 22.6.4. Dictionary Order 22.6.5. Month Order 22.6.6. Reverse Sort
22.7. lensort: Sort Lines by Length 22.8. Sorting a List of People by Last Name
V. Processes and the Kernel
23. Job Control
23.1. Job Control in a Nutshell 23.2. Job Control Basics
23.2.1. How Job Control Works 23.2.2. Using Job Control from Your Shell
23.3. Using jobs Effectively 23.4. Some Gotchas with Job Control 23.5. The "Current Job" Isn't Always What You Expect 23.6. Job Control and autowrite: Real Timesavers! 23.7. System Overloaded? Try Stopping Some Jobs 23.8. Notification When Jobs Change State 23.9. Stop Background Output with stty tostop 23.10. nohup 23.11. Disowning Processes 23.12. Linux Virtual Consoles
23.12.1. What Are They? 23.12.2. Scrolling, Using a Mouse
23.13. Stopping Remote Login Sessions
24. Starting, Stopping, and Killing Processes
24.1. What's in This Chapter 24.2. fork and exec 24.3. Managing Processes: Overall Concepts 24.4. Subshells 24.5. The ps Command 24.6. The Controlling Terminal 24.7. Tracking Down Processes
24.7.1. System V 24.7.2. BSD
24.8. Why ps Prints Some Commands in Parentheses 24.9. The /proc Filesystem
24.9.1. Memory Information 24.9.2. Kernel and System Statistics 24.9.3. Statistics of the Current Process 24.9.4. Statistics of Processes by PID 24.9.5. A Glimpse at Hardware
24.10. What Are Signals? 24.11. Killing Foreground Jobs 24.12. Destroying Processes with kill 24.13. Printer Queue Watcher: A Restartable Daemon Shell Script 24.14. Killing All Your Processes 24.15. Killing Processes by Name? 24.16. Kill Processes Interactively
24.16.1. killall -i 24.16.2. zap
24.17. Processes Out of Control? Just STOP Them 24.18. Cleaning Up an Unkillable Process 24.19. Why You Can't Kill a Zombie 24.20. The Process Chain to Your Window 24.21. Terminal Windows Without Shells 24.22. Close a Window by Killing Its Process(es)
24.22.1. Example #1: An xterm Window 24.22.2. Example #2: A Web Browser 24.22.3. Closing a Window from a Shell Script
25. Delayed Execution
25.1. Building Software Robots the Easy Way 25.2. Periodic Program Execution: The cron Facility
25.2.1. Execution Scheduling 25.2.2. A Little Help, etc.
25.3. Adding crontab Entries 25.4. Including Standard Input Within a cron Entry 25.5. The at Command 25.6. Making Your at Jobs Quiet 25.7. Checking and Removing Jobs 25.8. Avoiding Other at and cron Jobs 25.9. Waiting a Little While: sleep
26. System Performance and Profiling
26.1. Timing Is Everything 26.2. Timing Programs 26.3. What Commands Are Running and How Long Do They Take? 26.4. Checking System Load: uptime 26.5. Know When to Be "nice" to Other Users...and When Not To
26.5.1. BSD C Shell nice 26.5.2. BSD Standalone nice 26.5.3. System V C Shell nice 26.5.4. System V Standalone nice
26.6. A nice Gotcha 26.7. Changing a Running Job's Niceness
VI. Scripting
27. Shell Interpretation
27.1. What the Shell Does 27.2. How the Shell Executes Other Commands 27.3. What's a Shell, Anyway?
27.3.1. How Shells Run Other Programs 27.3.2. Interactive Use Versus Shell Scripts 27.3.3. Types of Shells 27.3.4. Shell Search Paths 27.3.5. Bourne Shell Used Here 27.3.6. Default Commands
27.4. Command Evaluation and Accidentally Overwriting Files 27.5. Output Command-Line Arguments One by One 27.6. Controlling Shell Command Searches 27.7. Wildcards Inside Aliases 27.8. eval: When You Need Another Chance 27.9. Which One Will bash Use? 27.10. Which One Will the C Shell Use? 27.11. Is It "2>&1 file" or "> file 2>&1"? Why? 27.12. Bourne Shell Quoting
27.12.1. Special Characters 27.12.2. How Quoting Works 27.12.3. Single Quotes Inside Single Quotes? 27.12.4. Multiline Quoting
27.13. Differences Between Bourne and C Shell Quoting
27.13.1. Special Characters 27.13.2. How Quoting Works
27.14. Quoting Special Characters in Filenames 27.15. Verbose and Echo Settings Show Quoting 27.16. Here Documents 27.17. "Special" Characters and Operators 27.18. How Many Backslashes?
28. Saving Time on the Command Line
28.1. What's Special About the Unix Command Line 28.2. Reprinting Your Command Line with CTRL-r 28.3. Use Wildcards to Create Files? 28.4. Build Strings with { } 28.5. String Editing (Colon) Operators 28.6. Automatic Completion
28.6.1. General Example: Filename Completion 28.6.2. Menu Completion 28.6.3. Command-Specific Completion 28.6.4. Editor Functions for Completion
28.7. Don't Match Useless Files in Filename Completion 28.8. Repeating Commands 28.9. Repeating and Varying Commands
28.9.1. A foreach Loop 28.9.2. A for Loop
28.10. Repeating a Command with Copy-and-Paste 28.11. Repeating a Time-Varying Command 28.12. Multiline Commands, Secondary Prompts 28.13. Here Document Example #1: Unformatted Form Letters 28.14. Command Substitution 28.15. Handling Lots of Text with Temporary Files 28.16. Separating Commands with Semicolons 28.17. Dealing with Too Many Arguments 28.18. Expect
28.18.1. Dialback 28.18.2. Automating /bin/passwd 28.18.3. Testing: A Story 28.18.4. Other Problems
29. Custom Commands
29.1. Creating Custom Commands 29.2. Introduction to Shell Aliases 29.3. C-Shell Aliases with Command-Line Arguments 29.4. Setting and Unsetting Bourne-Type Aliases 29.5. Korn-Shell Aliases 29.6. zsh Aliases 29.7. Sourceable Scripts 29.8. Avoiding C-Shell Alias Loops 29.9. How to Put if-then-else in a C-Shell Alias 29.10. Fix Quoting in csh Aliases with makealias and quote 29.11. Shell Function Basics
29.11.1. Simple Functions: ls with Options 29.11.2. Functions with Loops: Internet Lookup 29.11.3. Setting Current Shell Environment: The work Function 29.11.4. Functions Calling Functions: Factorials 29.11.5. Conclusion
29.12. Shell Function Specifics 29.13. Propagating Shell Functions
29.13.1. Exporting bash Functions 29.13.2. FPATH Search Path
29.13.2.1. Korn shell 29.13.2.2. zsh
29.14. Simulated Bourne Shell Functions and Aliases
30. The Use of History
30.1. The Lessons of History 30.2. History in a Nutshell 30.3. My Favorite Is !$ 30.4. My Favorite Is !:n* 30.5. My Favorite Is ^^ 30.6. Using !$ for Safety with Wildcards 30.7. History by Number 30.8. History Substitutions 30.9. Repeating a Cycle of Commands 30.10. Running a Series of Commands on a File 30.11. Check Your History First with :p 30.12. Picking Up Where You Left Off
30.12.1. bash, ksh, zsh 30.12.2. C Shells
30.13. Pass History to Another Shell 30.14. Shell Command-Line Editing
30.14.1. vi Editing Mode 30.14.2. Emacs Editing Mode 30.14.3. tcsh Editing 30.14.4. ksh Editing 30.14.5. bash Editing 30.14.6. zsh Editing
30.15. Changing History Characters with histchars 30.16. Instead of Changing History Characters
31. Moving Around in a Hurry
31.1. Getting Around the Filesystem 31.2. Using Relative and Absolute Pathnames 31.3. What Good Is a Current Directory? 31.4. How Does Unix Find Your Current Directory? 31.5. Saving Time When You Change Directories: cdpath 31.6. Loop Control: break and continue 31.7. The Shells' pushd and popd Commands 31.8. Nice Aliases for pushd 31.9. Quick cds with Aliases 31.10. cd by Directory Initials 31.11. Finding (Anyone's) Home Directory, Quickly 31.12. Marking Your Place with a Shell Variable 31.13. Automatic Setup When You Enter/Exit a Directory
32. Regular Expressions (Pattern Matching)
32.1. That's an Expression 32.2. Don't Confuse Regular Expressions with Wildcards 32.3. Understanding Expressions 32.4. Using Metacharacters in Regular Expressions 32.5. Regular Expressions: The Anchor Characters ^ and $ 32.6. Regular Expressions: Matching a Character with a Character Set 32.7. Regular Expressions: Match Any Character with . (Dot) 32.8. Regular Expressions: Specifying a Range of Characters with [...] 32.9. Regular Expressions: Exceptions in a Character Set 32.10. Regular Expressions: Repeating Character Sets with * 32.11. Regular Expressions: Matching a Specific Number of Sets with \ { and \ } 32.12. Regular Expressions: Matching Words with \ < and \ > 32.13. Regular Expressions: Remembering Patterns with \ (, \ ), and \1 32.14. Regular Expressions: Potential Problems 32.15. Extended Regular Expressions 32.16. Getting Regular Expressions Right 32.17. Just What Does a Regular Expression Match? 32.18. Limiting the Extent of a Match 32.19. I Never Meta Character I Didn't Like 32.20. Valid Metacharacters for Different Unix Programs 32.21. Pattern Matching Quick Reference with Examples
32.21.1. Examples of Searching 32.21.2. Examples of Searching and Replacing
33. Wildcards
33.1. File-Naming Wildcards 33.2. Filename Wildcards in a Nutshell 33.3. Who Handles Wildcards? 33.4. What if a Wildcard Doesn't Match? 33.5. Maybe You Shouldn't Use Wildcards in Pathnames 33.6. Getting a List of Matching Files with grep -l 33.7. Getting a List of Nonmatching Files
33.7.1. Using grep -c 33.7.2. The vgrep Script
33.8. nom: List Files That Don't Match a Wildcard
34. The sed Stream Editor
34.1. sed Sermon^H^H^H^H^H^HSummary 34.2. Two Things You Must Know About sed 34.3. Invoking sed 34.4. Testing and Using a sed Script: checksed, runsed
34.4.1. checksed 34.4.2. runsed
34.5. sed Addressing Basics 34.6. Order of Commands in a Script 34.7. One Thing at a Time 34.8. Delimiting a Regular Expression 34.9. Newlines in a sed Replacement 34.10. Referencing the Search String in a Replacement 34.11. Referencing Portions of a Search String 34.12. Search and Replacement: One Match Among Many 34.13. Transformations on Text 34.14. Hold Space: The Set-Aside Buffer 34.15. Transforming Part of a Line 34.16. Making Edits Across Line Boundaries 34.17. The Deliberate Scrivener 34.18. Searching for Patterns Split Across Lines 34.19. Multiline Delete 34.20. Making Edits Everywhere Except... 34.21. The sed Test Command 34.22. Uses of the sed Quit Command 34.23. Dangers of the sed Quit Command 34.24. sed Newlines, Quoting, and Backslashes in a Shell Script
35. Shell Programming for the Uninitiated
35.1. Writing a Simple Shell Program 35.2. Everyone Should Learn Some Shell Programming 35.3. What Environment Variables Are Good For 35.4. Parent-Child Relationships 35.5. Predefined Environment Variables 35.6. The PATH Environment Variable 35.7. PATH and path 35.8. The DISPLAY Environment Variable 35.9. Shell Variables 35.10. Test String Values with Bourne-Shell case 35.11. Pattern Matching in case Statements 35.12. Exit Status of Unix Processes 35.13. Test Exit Status with the if Statement 35.14. Testing Your Success 35.15. Loops That Test Exit Status
35.15.1. Looping Until a Command Succeeds 35.15.2. Looping Until a Command Fails
35.16. Set Exit Status of a Shell (Script) 35.17. Trapping Exits Caused by Interrupts 35.18. read: Reading from the Keyboard 35.19. Shell Script "Wrappers" for awk, sed, etc. 35.20. Handling Command-Line Arguments in Shell Scripts
35.20.1. With the "$@" Parameter 35.20.2. With a Loop 35.20.3. Counting Arguments with $#
35.21. Handling Command-Line Arguments with a for Loop 35.22. Handling Arguments with while and shift 35.23. Loop Control: break and continue 35.24. Standard Command-Line Parsing 35.25. The Bourne Shell set Command
35.25.1. Setting Options 35.25.2. Setting (and Parsing) Parameters 35.25.3. (Avoiding?) set with No Arguments 35.25.4. Watch Your Quoting 35.25.5. Can't Set $0
35.26. test: Testing Files and Strings 35.27. Picking a Name for a New Command 35.28. Finding a Program Name and Giving Your Program Multiple Names 35.29. Reading Files with the . and source Commands 35.30. Using Shell Functions in Shell Scripts
36. Shell Programming for the Initiated
36.1. Beyond the Basics 36.2. The Story of : # #! 36.3. Don't Need a Shell for Your Script? Don't Use One 36.4. Making #! Search the PATH 36.5. The exec Command 36.6. The Unappreciated Bourne Shell ":" Operator 36.7. Parameter Substitution 36.8. Save Disk Space and Programming: Multiple Names for a Program 36.9. Finding the Last Command-Line Argument 36.10. How to Unset All Command-Line Parameters 36.11. Standard Input to a for Loop 36.12. Making a for Loop with Multiple Variables 36.13. Using basename and dirname
36.13.1. Introduction to basename and dirname 36.13.2. Use with Loops
36.14. A while Loop with Several Loop Control Commands 36.15. Overview: Open Files and File Descriptors 36.16. n>&m: Swap Standard Output and Standard Error 36.17. A Shell Can Read a Script from Its Standard Input, but... 36.18. Shell Scripts On-the-Fly from Standard Input 36.19. Quoted hereis Document Terminators: sh Versus csh 36.20. Turn Off echo for "Secret" Answers 36.21. Quick Reference: expr
36.21.1. Syntax 36.21.2. Examples
36.22. Testing Characters in a String with expr 36.23. Grabbing Parts of a String
36.23.1. Matching with expr 36.23.2. Using echo with awk or cut 36.23.3. Using set and IFS 36.23.4. Using sed
36.24. Nested Command Substitution 36.25. Testing Two Strings with One case Statement 36.26. Outputting Text to an X Window 36.27. Shell Lockfile
37. Shell Script Debugging and Gotchas
37.1. Tips for Debugging Shell Scripts
37.1.1. Use -xv 37.1.2. Unmatched Operators 37.1.3. Exit Early 37.1.4. Missing or Extra esac, ;;, fi, etc. 37.1.5. Line Numbers Reset Inside Redirected Loops
37.2. Bourne Shell Debugger Shows a Shell Variable 37.3. Stop Syntax Errors in Numeric Tests 37.4. Stop Syntax Errors in String Tests 37.5. Quoting and Command-Line Parameters 37.6. How Unix Keeps Time 37.7. Copy What You Do with script 37.8. Cleaning script Files 37.9. Making an Arbitrary-Size File for Testing
VII. Extending and Managing Your Environment
38. Backing Up Files
38.1. What Is This "Backup" Thing? 38.2. tar in a Nutshell 38.3. Make Your Own Backups 38.4. More Ways to Back Up 38.5. How to Make Backups to a Local Device
38.5.1. What to Back Up 38.5.2. Backing Up to Tape 38.5.3. Backing Up to Floppies or Zip Disks 38.5.4. To gzip, or Not to gzip?
38.6. Restoring Files from Tape with tar
38.6.1. Restoring a Few Files 38.6.2. Remote Restoring
38.7. Using tar to a Remote Tape Drive 38.8. Using GNU tar with a Remote Tape Drive 38.9. On-Demand Incremental Backups of a Project 38.10. Using Wildcards with tar
38.10.1. Without GNU tar 38.10.2. With GNU tar 38.10.3. Wildcard Gotchas in GNU tar
38.11. Avoid Absolute Paths with tar 38.12. Getting tar's Arguments in the Right Order 38.13. The cpio Tape Archiver 38.14. Industrial Strength Backups
39. Creating and Reading Archives
39.1. Packing Up and Moving 39.2. Using tar to Create and Unpack Archives 39.3. GNU tar Sampler 39.4. Managing and Sharing Files with RCS and CVS 39.5. RCS Basics 39.6. List RCS Revision Numbers with rcsrevs 39.7. CVS Basics 39.8. More CVS
40. Software Installation
40.1. /usr/bin and Other Software Directories 40.2. The Challenges of Software Installation on Unix 40.3. Which make? 40.4. Simplifying the make Process 40.5. Using Debian's dselect
40.5.1. Choosing the Access Method 40.5.2. Updating Information on Available Packages 40.5.3. Choosing Packages for Installation or Removal 40.5.4. Exiting the Select Function 40.5.5. Installing Packages 40.5.6. Configuring Packages 40.5.7. Removing Packages 40.5.8. Exiting dselect
40.6. Installing Software with Debian's Apt-Get
40.6.1. Configuring the sources.list File 40.6.2. Using apt-get
40.6.2.1. Updating information on available packages 40.6.2.2. Installing a package 40.6.2.3. Upgrading installed packages
40.7. Interruptable gets with wget 40.8. The curl Application and One-Step GNU-Darwin Auto-Installer for OS X 40.9. Installation with FreeBSD Ports 40.10. Installing with FreeBSD Packages 40.11. Finding and Installing RPM Packaged Software
41. Perl
41.1. High-Octane Shell Scripting 41.2. Checking your Perl Installation 41.3. Compiling Perl from Scratch 41.4. Perl Boot Camp, Part 1: Typical Script Anatomy 41.5. Perl Boot Camp, Part 2: Variables and Data Types
41.5.1. Scalars 41.5.2. Arrays 41.5.3. Hashes 41.5.4. References
41.6. Perl Boot Camp, Part 3: Branching and Looping 41.7. Perl Boot Camp, Part 4: Pattern Matching 41.8. Perl Boot Camp, Part 5: Perl Knows Unix 41.9. Perl Boot Camp, Part 6: Modules 41.10. Perl Boot Camp, Part 7: perldoc 41.11. CPAN
41.11.1. Installing Modules the Easy Way 41.11.2. Installing Modules the Hard Way 41.11.3. Browsing the CPAN Web Site
41.12. Make Custom grep Commands (etc.) with Perl 41.13. Perl and the Internet
41.13.1. Be Your Own Web Browser with LWP 41.13.2. Sending Mail with Mail::Sendmail 41.13.3. CGI Teaser
42. Python
42.1. What Is Python? 42.2. Installation and Distutils 42.3. Python Basics
42.3.1. Indentation 42.3.2. Functions 42.3.3. Everything's an Object 42.3.4. Modules and Packages 42.3.5. I/O and Formatting 42.3.6. wxPython
42.4. Python and the Web 42.5. urllib 42.6. urllib2 42.7. htmllib and HTMLParser 42.8. cgi 42.9. mod_python 42.10. What About Perl?
VIII. Communication and Connectivity
43. Redirecting Input and Output
43.1. Using Standard Input and Output 43.2. One Argument with a cat Isn't Enough 43.3. Send (Only) Standard Error Down a Pipe 43.4. Problems Piping to a Pager 43.5. Redirection in C Shell: Capture Errors, Too? 43.6. Safe I/O Redirection with noclobber 43.7. The ( ) Subshell Operators
43.7.1. Combining Several Commands 43.7.2. Temporary Change of Directory and Environment
43.8. Send Output Two or More Places 43.9. How to tee Several Commands into One Place 43.10. Redirecting Output to More Than One Place 43.11. Named Pipes: FIFOs 43.12. What Can You Do with an Empty File?
44. Devices
44.1. Quick Introduction to Hardware 44.2. Reading Kernel Boot Output 44.3. Basic Kernel Configuration 44.4. Disk Partitioning 44.5. Filesystem Types and /etc/fstab 44.6. Mounting and Unmounting Removable Filesystems 44.7. Loopback Mounts 44.8. Network Devices — ifconfig 44.9. Mounting Network Filesystems — NFS, SMBFS 44.10. Win Is a Modem Not a Modem? 44.11. Setting Up a Dialup PPP Session 44.12. USB Configuration 44.13. Dealing with Sound Cards and Other Annoying Hardware 44.14. Decapitating Your Machine — Serial Consoles
45. Printing
45.1. Introduction to Printing 45.2. Introduction to Printing on Unix
45.2.1. lpr-Style Printing Commands 45.2.2. lp-Style Printing Commands
45.3. Printer Control with lpc 45.4. Using Different Printers 45.5. Using Symbolic Links for Spooling 45.6. Formatting Plain Text: pr 45.7. Formatting Plain Text: enscript 45.8. Printing Over a Network 45.9. Printing Over Samba
45.9.1. Printing to Unix Printers from Windows 45.9.2. Printing to Windows Printers from Unix
45.10. Introduction to Typesetting 45.11. A Bit of Unix Typesetting History 45.12. Typesetting Manpages: nroff 45.13. Formatting Markup Languages — troff, LATEX, HTML, and So On 45.14. Printing Languages — PostScript, PCL, DVI, PDF 45.15. Converting Text Files into a Printing Language 45.16. Converting Typeset Files into a Printing Language 45.17. Converting Source Files Automagically Within the Spooler 45.18. The Common Unix Printing System (CUPS) 45.19. The Portable Bitmap Package
46. Connectivity
46.1. TCP/IP — IP Addresses and Ports
46.1.1. Internet Protocol (IP) 46.1.2. Layer 4 Protocols: TCP, UDP, and ICMP
46.2. /etc/services Is Your Friend 46.3. Status and Troubleshooting 46.4. Where, Oh Where Did That Packet Go? 46.5. The Director of Operations: inetd 46.6. Secure Shell (SSH) 46.7. Configuring an Anonymous FTP Server 46.8. Mail — SMTP, POP, and IMAP 46.9. Domain Name Service (DNS) 46.10. Dynamic Host Configuration Protocol (DHCP) 46.11. Gateways and NAT 46.12. Firewalls 46.13. Gatewaying from a Personal LAN over a Modem
47. Connecting to MS Windows
47.1. Building Bridges 47.2. Installing and Configuring Samba 47.3. Securing Samba 47.4. SWAT and GUI SMB Browsers 47.5. Printing with Samba 47.6. Connecting to SMB Shares from Unix 47.7. Sharing Desktops with VNC
47.7.1. Connecting to a Windows VNC server 47.7.2. Setting up VNC on Unix
47.8. Of Emulators and APIs
47.8.1. VMWare 47.8.2. Wine
47.9. Citrix: Making Windows Multiuser
47.9.1. Citrix Metaframe 47.9.2. rdesktop 47.9.3. Hob
IX. Security
48. Security Basics
48.1. Understanding Points of Vulnerability 48.2. CERT Security Checklists 48.3. Keeping Up with Security Alerts 48.4. What We Mean by Buffer Overflow 48.5. What We Mean by DoS 48.6. Beware of Sluggish Performance
48.6.1. Check Processes 48.6.2. Checking Swap Space 48.6.3. Check Network Connections 48.6.4. Other Checks
48.7. Intruder Detection 48.8. Importance of MOTD 48.9. The Linux proc Filesystem 48.10. Disabling inetd 48.11. Disallow rlogin and rsh 48.12. TCP Wrappers
49. Root, Group, and User Management
49.1. Unix User/Group Infrastructure 49.2. When Does a User Become a User 49.3. Forgetting the root Password 49.4. Setting an Exact umask 49.5. Group Permissions in a Directory with the setgid Bit 49.6. Groups and Group Ownership 49.7. Add Users to a Group to Deny Permissions 49.8. Care and Feeding of SUID and SGID Scripts 49.9. Substitute Identity with su 49.10. Never Log In as root 49.11. Providing Superpowers with sudo 49.12. Enabling Root in Darwin 49.13. Disable logins
50. File Security, Ownership, and Sharing
50.1. Introduction to File Ownership and Security 50.2. Tutorial on File and Directory Permissions
50.2.1. User, Group, and World 50.2.2. Which Group is Which?
50.3. Who Will Own a New File? 50.4. Protecting Files with the Sticky Bit 50.5. Using chmod to Change File Permission 50.6. The Handy chmod = Operator 50.7. Protect Important Files: Make Them Unwritable 50.8. cx, cw, c-w: Quick File Permission Changes 50.9. A Loophole: Modifying Files Without Write Access 50.10. A Directory That People Can Access but Can't List 50.11. Juggling Permissions 50.12. File Verification with md5sum 50.13. Shell Scripts Must Be Readable and (Usually) Executable 50.14. Why Can't You Change File Ownership? 50.15. How to Change File Ownership Without chown
51. SSH
51.1. Enabling Remote Access on Mac OS X 51.2. Protecting Access Through SSH 51.3. Free SSH with OpenSSH 51.4. SSH Problems and Solutions 51.5. General and Authentication Problems 51.6. Key and Agent Problems 51.7. Server and Client Problems
Glossary Index About the Authors Colophon SPECIAL OFFER: Upgrade this ebook with O’Reilly
  • ← Prev
  • Back
  • Next →
  • ← Prev
  • Back
  • Next →

Chief Librarian: Las Zenow <zenow@riseup.net>
Fork the source code from gitlab
.

This is a mirror of the Tor onion service:
http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion