ebook img

UNIX Power Tools, 3rd Edition PDF

1611 Pages·2013·9.59 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview UNIX Power Tools, 3rd Edition

UNIX Power Tools, 3rd Edition Table of Contents 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.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.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

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.