
bash Cookbook
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
For system administrators, programmers, and end users, shell command or carefully crafted shell script can save you time and effort, or facilitate consistency and repeatability for a variety of common tasks. This cookbook provides more than 300 practical recipes for using bash, the popular Unix shell that enables you to harness and customize the power of any Unix or Linux system.
Ideal for new and experienced users alike?including proficient Windows users and sysadmins?this updated second edition helps you solve a wide range of problems. You'll learn ways to handle input/output, file manipulation, program execution, administrative tasks, and many other challenges. Each recipe includes one or more scripting examples and a discussion of why the solution works.
You'll find recipes for problems including:
- Standard output and input, and executing commands
- Shell variables, shell logic, and arithmetic
- Intermediate shell tools and advanced scripting
- Searching for files with find, locate, and slocate
- Working with dates and times
- Creating shell scripts for various end-user tasks
- Working with tasks that require parsing
- Writing secure shell scripts
- Configuring and customizing bash
More details
Other editions
Additional editions

Content
- Intro
- Copyright
- Table of Contents
- Preface
- Who Should Read This Book
- About This Book
- GNU Software
- A Note About Code Examples
- Useless Use of cat
- A Note About Perl
- More Resources
- Conventions Used in This Book
- Using Code Examples
- O'Reilly Safari
- We'd Like to Hear from You
- Acknowledgments
- Reviewers
- O'Reilly
- From the Authors
- Chapter 1. Beginning bash
- 1.1 Why bash?
- 1.2 The bash Shell
- 1.3 Decoding the Prompt
- Problem
- Solution
- Discussion
- See Also
- 1.4 Showing Where You Are
- Problem
- Solution
- Discussion
- See Also
- 1.5 Finding and Running Commands
- Problem
- Solution
- Discussion
- See Also
- 1.6 Getting Information About Files
- Problem
- Solution
- Discussion
- See Also
- 1.7 Showing All Hidden (Dot) Files in the Current Directory
- Problem
- Solution
- Discussion
- See Also
- 1.8 Using Shell Quoting
- Problem
- Solution
- Discussion
- See Also
- 1.9 Using or Replacing Builtins and External Commands
- Problem
- Solution
- Discussion
- See Also
- 1.10 Determining if You Are Running Interactively
- Problem
- Solution
- Discussion
- See Also
- 1.11 Setting bash as Your Default Shell
- Problem
- Solution
- Discussion
- See Also
- 1.12 Keeping bash Updated
- Problem
- Solution
- Discussion
- See Also
- 1.13 Getting bash for Linux
- Problem
- Solution
- Discussion
- See Also
- 1.14 Getting bash for xBSD
- Problem
- Solution
- Discussion
- See Also
- 1.15 Getting bash for macOS
- Problem
- Solution
- Discussion
- See Also
- 1.16 Getting bash for Unix
- Problem
- Solution
- Discussion
- See Also
- 1.17 Getting bash for Windows
- Problem
- Solution
- Discussion
- See Also
- 1.18 Getting bash Without Getting bash
- Problem
- Solution
- Discussion
- See Also
- 1.19 Learning More About bash Documentation
- Problem
- Solution
- See Also
- Chapter 2. Standard Output
- 2.1 Writing Output to the Terminal/Window
- Problem
- Solution
- Discussion
- See Also
- 2.2 Writing Output but Preserving Spacing
- Problem
- Solution
- Discussion
- See Also
- 2.3 Writing Output with More Formatting Control
- Problem
- Solution
- Discussion
- See Also
- 2.4 Writing Output Without the Newline
- Problem
- Solution
- Discussion
- See Also
- 2.5 Saving Output from a Command
- Problem
- Solution
- Discussion
- See Also
- 2.6 Saving Output to Other Files
- Problem
- Solution
- Discussion
- See Also
- 2.7 Saving Output from the ls Command
- Problem
- Solution
- Discussion
- See Also
- 2.8 Sending Output and Error Messages to Different Files
- Problem
- Solution
- Discussion
- See Also
- 2.9 Sending Output and Error Messages to the Same File
- Problem
- Solution
- Discussion
- See Also
- 2.10 Appending Rather than Clobbering Output
- Problem
- Solution
- Discussion
- See Also
- 2.11 Using Just the Beginning or End of a File
- Problem
- Solution
- Discussion
- See Also
- 2.12 Skipping a Header in a File
- Problem
- Solution
- Discussion
- See Also
- 2.13 Throwing Output Away
- Problem
- Solution
- Discussion
- See Also
- 2.14 Saving or Grouping Output from Several Commands
- Problem
- Solution
- Discussion
- See Also
- 2.15 Connecting Two Programs by Using Output as Input
- Problem
- Solution
- Discussion
- See Also
- 2.16 Saving a Copy of Output Even While Using It as Input
- Problem
- Solution
- Discussion
- See Also
- 2.17 Connecting Two Programs by Using Output as Arguments
- Problem
- Solution
- Discussion
- See Also
- 2.18 Using Multiple Redirects on One Line
- Problem
- Solution
- Discussion
- See Also
- 2.19 Saving Output When Redirect Doesn't Seem to Work
- Problem
- Solution
- Discussion
- See Also
- 2.20 Swapping STDERR and STDOUT
- Problem
- Solution
- Discussion
- See Also
- 2.21 Keeping Files Safe from Accidental Overwriting
- Problem
- Solution
- Discussion
- See Also
- 2.22 Clobbering a File on Purpose
- Problem
- Solution
- Discussion
- See Also
- Chapter 3. Standard Input
- 3.1 Getting Input from a File
- Problem
- Solution
- Discussion
- See Also
- 3.2 Keeping Your Data with Your Script
- Problem
- Solution
- Discussion
- See Also
- 3.3 Preventing Weird Behavior in a Here-Document
- Problem
- Solution
- Discussion
- See Also
- 3.4 Indenting Here-Documents
- Problem
- Solution
- Discussion
- See Also
- 3.5 Getting User Input
- Problem
- Solution
- Discussion
- See Also
- 3.6 Getting Yes or No Input
- Problem
- Solution
- Discussion
- See Also
- 3.7 Selecting from a List of Options
- Problem
- Solution
- Discussion
- See Also
- 3.8 Prompting for a Password
- Problem
- Solution
- Discussion
- See Also
- Chapter 4. Executing Commands
- 4.1 Running Any Executable
- Problem
- Solution
- Discussion
- See Also
- 4.2 Running Several Commands in Sequence
- Problem
- Solution
- Discussion
- See Also
- 4.3 Running Several Commands All at Once
- Problem
- Solution
- Discussion
- 4.4 Telling Whether a Command Succeeded or Not
- Problem
- Solution
- Discussion
- See Also
- 4.5 Running a Command Only if Another Command Succeeded
- Problem
- Solution
- Discussion
- See Also
- 4.6 Using Fewer if Statements
- Problem
- Solution
- Discussion
- See Also
- 4.7 Running Long Jobs Unattended
- Problem
- Solution
- Discussion
- See Also
- 4.8 Displaying Error Messages When Failures Occur
- Problem
- Solution
- Discussion
- See Also
- 4.9 Running Commands from a Variable
- Problem
- Solution
- Discussion
- See Also
- 4.10 Running All Scripts in a Directory
- Problem
- Solution
- Discussion
- See Also
- Chapter 5. Basic Scripting: Shell Variables
- 5.1 Documenting Your Script
- Problem
- Solution
- Discussion
- See Also
- 5.2 Embedding Documentation in Shell Scripts
- Problem
- Solution
- Discussion
- See Also
- 5.3 Promoting Script Readability
- Problem
- Solution
- Discussion
- See Also
- 5.4 Separating Variable Names from Surrounding Text
- Problem
- Solution
- Discussion
- See Also
- 5.5 Exporting Variables
- Problem
- Solution
- Discussion
- See Also
- 5.6 Seeing All Variable Values
- Problem
- Solution
- Discussion
- See Also
- 5.7 Using Parameters in a Shell Script
- Problem
- Solution
- Discussion
- See Also
- 5.8 Looping Over Arguments Passed to a Script
- Problem
- Solution
- Discussion
- See Also
- 5.9 Handling Parameters with Spaces
- Problem
- Solution
- Discussion
- See Also
- 5.10 Handling Lists of Parameters with Spaces
- Problem
- Solution
- Discussion
- See Also
- 5.11 Counting Arguments
- Problem
- Solution
- Discussion
- See Also
- 5.12 Consuming Arguments
- Problem
- Solution
- Discussion
- See Also
- 5.13 Getting Default Values
- Problem
- Solution
- Discussion
- See Also
- 5.14 Setting Default Values
- Problem
- Solution
- Discussion
- See Also
- 5.15 Using null as a Valid Default Value
- Problem
- Solution
- Discussion
- See Also
- 5.16 Using More than Just a Constant String for Default
- Problem
- Solution
- Discussion
- See Also
- 5.17 Giving an Error Message for Unset Parameters
- Problem
- Solution
- Discussion
- See Also
- 5.18 Changing Pieces of a String
- Problem
- Solution
- Discussion
- See Also
- 5.19 Getting the Absolute Value of a Number
- Problem
- Solution
- Discussion
- See Also
- 5.20 Using bash for basename
- Problem
- Solution
- Discussion
- See Also
- 5.21 Using bash for dirname
- Problem
- Solution
- Discussion
- See Also
- 5.22 Using Alternate Values for Comma Separated Values
- Problem
- Solution
- See Also
- 5.23 Using Array Variables
- Problem
- Solution
- Discussion
- See Also
- 5.24 Converting Between Upper- and Lowercase
- Problem
- Solution
- See Also
- 5.25 Converting to Camel Case
- Problem
- Solution
- Discussion
- See Also
- Chapter 6. Shell Logic and Arithmetic
- 6.1 Doing Arithmetic in Your Shell Script
- Problem
- Solution
- Discussion
- See Also
- 6.2 Branching on Conditions
- Problem
- Solution
- Discussion
- See Also
- 6.3 Testing for File Characteristics
- Problem
- Solution
- Discussion
- See Also
- 6.4 Testing for More than One Thing
- Problem
- Solution
- Discussion
- See Also
- 6.5 Testing for String Characteristics
- Problem
- Solution
- Discussion
- See Also
- 6.6 Testing for Equality
- Problem
- Solution
- Discussion
- See Also
- 6.7 Testing with Pattern Matches
- Problem
- Solution
- Discussion
- See Also
- 6.8 Testing with Regular Expressions
- Problem
- Solution
- Discussion
- See Also
- 6.9 Changing Behavior with Redirections
- Problem
- Solution
- Discussion
- See Also
- 6.10 Looping for a While
- Problem
- Solution
- Discussion
- See Also
- 6.11 Looping with a read
- Problem
- Solution
- Discussion
- See Also
- 6.12 Looping with a Count
- Problem
- Solution
- Discussion
- See Also
- 6.13 Looping with Floating-Point Values
- Problem
- Solution
- Discussion
- See Also
- 6.14 Branching Many Ways
- Problem
- Solution
- Discussion
- See Also
- 6.15 Parsing Command-Line Arguments
- Problem
- Solution
- Discussion
- See Also
- 6.16 Creating Simple Menus
- Problem
- Solution
- Discussion
- See Also
- 6.17 Changing the Prompt on Simple Menus
- Problem
- Solution
- Discussion
- See Also
- 6.18 Creating a Simple RPN Calculator
- Problem
- Solution
- Discussion
- See Also
- 6.19 Creating a Command-Line Calculator
- Problem
- Solution
- Discussion
- See Also
- Chapter 7. Intermediate Shell Tools I
- 7.1 Sifting Through Files for a String
- Problem
- Solution
- Discussion
- See Also
- 7.2 Getting Just the Filename from a Search
- Problem
- Solution
- Discussion
- See Also
- 7.3 Getting a Simple True/False from a Search
- Problem
- Solution
- Discussion
- See Also
- 7.4 Searching for Text While Ignoring Case
- Problem
- Solution
- Discussion
- See Also
- 7.5 Doing a Search in a Pipeline
- Problem
- Solution
- Discussion
- See Also
- 7.6 Paring Down What the Search Finds
- Problem
- Solution
- Discussion
- See Also
- 7.7 Searching with More Complex Patterns
- See Also
- 7.8 Searching for an SSN
- Problem
- Solution
- Discussion
- See Also
- 7.9 Grepping Compressed Files
- Problem
- Solution
- Discussion
- See Also
- 7.10 Keeping Some Output, Discarding the Rest
- Problem
- Solution
- Discussion
- See Also
- 7.11 Keeping Only a Portion of a Line of Output
- Problem
- Solution
- Discussion
- See Also
- 7.12 Reversing the Words on Each Line
- Problem
- Solution
- Discussion
- See Also
- 7.13 Summing a List of Numbers
- Problem
- Solution
- Discussion
- See Also
- 7.14 Counting String Values with awk
- Problem
- Solution
- Discussion
- See Also
- 7.15 Counting String Values with bash
- Problem
- Solution
- Discussion
- See Also
- 7.16 Showing Data as a Quick and Easy Histogram
- Problem
- Solution
- Discussion
- See Also
- 7.17 An Easy Histogram with bash
- Problem
- Solution
- Discussion
- See Also
- 7.18 Showing a Paragraph of Text After a Found Phrase
- Problem
- Solution
- Discussion
- See Also
- Chapter 8. Intermediate Shell Tools II
- 8.1 Sorting Your Output
- Problem
- Solution
- Discussion
- See Also
- 8.2 Sorting Numbers
- Problem
- Solution
- Discussion
- See Also
- 8.3 Sorting IP Addresses
- Problem
- Solution
- Discussion
- See Also
- 8.4 Cutting Out Parts of Your Output
- Problem
- Solution
- Discussion
- See Also
- 8.5 Removing Duplicate Lines
- Problem
- Solution
- Discussion
- See Also
- 8.6 Compressing Files
- Problem
- Solution
- Discussion
- See Also
- 8.7 Uncompressing Files
- Problem
- Solution
- Discussion
- See Also
- 8.8 Checking a tar Archive for Unique Directories
- Problem
- Solution
- Discussion
- See Also
- 8.9 Translating Characters
- Problem
- Solution
- Discussion
- See Also
- 8.10 Converting Uppercase to Lowercase
- Problem
- Solution
- Discussion
- See Also
- 8.11 Converting DOS Files to Linux Format
- Problem
- Solution
- Discussion
- See Also
- 8.12 Removing Smart Quotes
- Problem
- Solution
- Discussion
- See Also
- 8.13 Counting Lines, Words, or Characters in a File
- Problem
- Solution
- Discussion
- See Also
- 8.14 Rewrapping Paragraphs
- Problem
- Solution
- Discussion
- See Also
- 8.15 Doing More with less
- Problem
- Solution
- Discussion
- See Also
- Chapter 9. Finding Files: find, locate, slocate
- 9.1 Finding All Your MP3 Files
- Problem
- Solution
- Discussion
- See Also
- 9.2 Handling Filenames Containing Odd Characters
- Problem
- Solution
- Discussion
- See Also
- 9.3 Speeding Up Operations on Found Files
- Problem
- Solution
- See Also
- 9.4 Finding Files Across Symbolic Links
- Problem
- Solution
- Discussion
- See Also
- 9.5 Finding Files Irrespective of Case
- Problem
- Solution
- Discussion
- See Also
- 9.6 Finding Files by Date
- Problem
- Solution
- Discussion
- See Also
- 9.7 Finding Files by Type
- Problem
- Solution
- Discussion
- See Also
- 9.8 Finding Files by Size
- Problem
- Solution
- Discussion
- See Also
- 9.9 Finding Files by Content
- Problem
- Solution
- Discussion
- See Also
- 9.10 Finding Existing Files and Content Fast
- Problem
- Solution
- Discussion
- See Also
- 9.11 Finding a File Using a List of Possible Locations
- Problem
- Solution
- Discussion
- See Also
- Chapter 10. Additional Features for Scripting
- 10.1 "Daemon-izing" Your Script
- Problem
- Solution
- Discussion
- See Also
- 10.2 Reusing Code with Includes and Sourcing
- Problem
- Solution
- Discussion
- See Also
- 10.3 Using Configuration Files in a Script
- Problem
- Solution
- Discussion
- See Also
- 10.4 Defining Functions
- Problem
- Solution
- Discussion
- See Also
- 10.5 Using Functions: Parameters and Return Values
- Problem
- Solution
- Discussion
- See Also
- 10.6 Trapping Interrupts
- Problem
- Solution
- Discussion
- See Also
- 10.7 Redefining Commands with alias
- Problem
- Solution
- Discussion
- See Also
- 10.8 Avoiding Aliases and Functions
- Problem
- Solution
- Discussion
- See Also
- 10.9 Counting Elapsed Time
- Problem
- Solution
- Discussion
- See Also
- 10.10 Writing Wrappers
- Problem
- Solution
- Discussion
- See Also
- Chapter 11. Working with Dates and Times
- 11.1 Formatting Dates for Display
- Problem
- Solution
- Discussion
- See Also
- 11.2 Supplying a Default Date
- Problem
- Solution
- Discussion
- See Also
- 11.3 Automating Date Ranges
- Problem
- Solution
- Discussion
- See Also
- 11.4 Converting Dates and Times to Epoch Seconds
- Problem
- Solution
- Discussion
- See Also
- 11.5 Converting Epoch Seconds to Dates and Times
- Problem
- Solution
- Discussion
- See Also
- 11.6 Getting Yesterday or Tomorrow with Perl
- Problem
- Solution
- Discussion
- See Also
- 11.7 Figuring Out Date and Time Arithmetic
- Problem
- Solution
- Discussion
- See Also
- 11.8 Handling Time Zones, Daylight Saving Time, and Leap Years
- Problem
- Solution
- Discussion
- See Also
- 11.9 Using date and cron to Run a Script on the Nth Day
- Problem
- Solution
- Discussion
- See Also
- 11.10 Logging with Dates
- Problem
- Solution
- Discussion
- See Also
- Chapter 12. End-User Tasks as Shell Scripts
- 12.1 Starting Simple by Printing Dashes
- Problem
- Solution
- Discussion
- See Also
- 12.2 Viewing Photos in an Album
- Problem
- Solution
- Discussion
- See Also
- 12.3 Loading Your MP3 Player
- Problem
- Solution
- Discussion
- See Also
- 12.4 Burning a CD
- Problem
- Solution
- Discussion
- See Also
- 12.5 Comparing Two Documents
- Problem
- Solution
- Discussion
- See Also
- Chapter 13. Parsing and Similar Tasks
- 13.1 Parsing Arguments for Your Shell Script
- Problem
- Solution
- Discussion
- See Also
- 13.2 Parsing Arguments with Your Own Error Messages
- Problem
- Solution
- Discussion
- See Also
- 13.3 Parsing Some HTML
- Problem
- Solution
- Discussion
- See Also
- 13.4 Parsing Output into an Array
- Problem
- Solution
- Discussion
- See Also
- 13.5 Parsing Output with a Function Call
- Problem
- Solution
- Discussion
- See Also
- 13.6 Parsing Text with a read Statement
- Problem
- Solution
- Discussion
- See Also
- 13.7 Parsing with read into an Array
- Problem
- Solution
- Discussion
- See Also
- 13.8 Reading an Entire File
- Problem
- Solution
- Discussion
- See Also
- 13.9 Getting Your Plurals Right
- Problem
- Solution
- Discussion
- See Also
- 13.10 Taking It One Character at a Time
- Problem
- Solution
- Discussion
- See Also
- 13.11 Cleaning Up an SVN Source Tree
- Problem
- Solution
- Discussion
- See Also
- 13.12 Setting Up a Database with MySQL
- Problem
- Solution
- Discussion
- See Also
- 13.13 Isolating Specific Fields in Data
- Problem
- Solution
- Discussion
- See Also
- 13.14 Updating Specific Fields in Datafiles
- Problem
- Solution
- Discussion
- See Also
- 13.15 Trimming Whitespace
- Problem
- Solution
- Discussion
- See Also
- 13.16 Compressing Whitespace
- Problem
- Solution
- Discussion
- See Also
- 13.17 Processing Fixed-Length Records
- Problem
- Solution
- Discussion
- See Also
- 13.18 Processing Files with No Line Breaks
- Problem
- Solution
- Discussion
- See Also
- 13.19 Converting a Datafile to CSV
- Problem
- Solution
- Discussion
- See Also
- 13.20 Parsing a CSV Datafile
- Problem
- Solution
- Discussion
- See Also
- Chapter 14. Writing Secure Shell Scripts
- 14.1 Avoiding Common Security Problems
- Problem
- Solution
- Discussion
- See Also
- 14.2 Avoiding Interpreter Spoofing
- Problem
- Solution
- Discussion
- See Also
- 14.3 Setting a Secure $PATH
- Problem
- Solution
- Discussion
- See Also
- 14.4 Clearing All Aliases
- Problem
- Solution
- Discussion
- See Also
- 14.5 Clearing the Command Hash
- Problem
- Solution
- Discussion
- See Also
- 14.6 Preventing Core Dumps
- Problem
- Solution
- Discussion
- See Also
- 14.7 Setting a Secure $IFS
- Problem
- Solution
- Discussion
- See Also
- 14.8 Setting a Secure umask
- Problem
- Solution
- Discussion
- See Also
- 14.9 Finding World-Writable Directories in Your $PATH
- Problem
- Solution
- Discussion
- See Also
- 14.10 Adding the Current Directory to the $PATH
- Problem
- Solution
- Discussion
- See Also
- 14.11 Using Secure Temporary Files
- Problem
- Solution
- Discussion
- See Also
- 14.12 Validating Input
- Problem
- Solution
- Discussion
- See Also
- 14.13 Setting Permissions
- Problem
- Solution
- Discussion
- See Also
- 14.14 Leaking Passwords into the Process List
- Problem
- Solution
- Discussion
- See Also
- 14.15 Writing setuid or setgid Scripts
- Problem
- Solution
- Discussion
- See Also
- 14.16 Restricting Guest Users
- Problem
- Solution
- Discussion
- See Also
- 14.17 Using chroot Jails
- Problem
- Solution
- Discussion
- See Also
- 14.18 Running as a Non-root User
- Problem
- Solution
- Discussion
- See Also
- 14.19 Using sudo More Securely
- Problem
- Solution
- Discussion
- See Also
- 14.20 Using Passwords in Scripts
- Problem
- Solution
- Discussion
- See Also
- 14.21 Using SSH Without a Password
- Problem
- Solution
- Discussion
- See Also
- 14.22 Restricting SSH Commands
- Problem
- Solution
- Discussion
- See Also
- 14.23 Disconnecting Inactive Sessions
- Problem
- Solution
- Discussion
- See Also
- Chapter 15. Advanced Scripting
- 15.1 Finding bash Portably for #!
- Problem
- Solution
- Discussion
- See Also
- 15.2 Setting a POSIX $PATH
- Problem
- Solution
- Discussion
- See Also
- 15.3 Developing Portable Shell Scripts
- Problem
- Solution
- Discussion
- See Also
- 15.4 Testing Scripts Using Virtual Machines
- Problem
- Solution
- Discussion
- See Also
- 15.5 Using for Loops Portably
- Problem
- Solution
- Discussion
- See Also
- 15.6 Using echo Portably
- Problem
- Solution
- Discussion
- See Also
- 15.7 Splitting Output Only When Necessary
- Problem
- Solution
- Discussion
- See Also
- 15.8 Viewing Output in Hex
- Problem
- Solution
- Discussion
- See Also
- 15.9 Using bash Net-Redirection
- Problem
- Solution
- Discussion
- See Also
- 15.10 Finding My IP Address
- Problem
- Solution
- Discussion
- See Also
- 15.11 Getting Input from Another Machine
- Problem
- Solution
- Discussion
- See Also
- 15.12 Redirecting Output for the Life of a Script
- Problem
- Solution
- Discussion
- See Also
- 15.13 Working Around "Argument list too long" Errors
- Problem
- Solution
- Discussion
- See Also
- 15.14 Logging to syslog from Your Script
- Problem
- Solution
- Discussion
- See Also
- 15.15 Using logger Correctly
- Problem
- Solution
- Discussion
- See Also
- 15.16 Sending Email from Your Script
- Problem
- Solution
- Discussion
- See Also
- 15.17 Automating a Process Using Phases
- Problem
- Solution
- Discussion
- See Also
- 15.18 Doing Two Things at Once
- Problem
- Solution
- Discussion
- See Also
- 15.19 Running an SSH command on multiple hosts
- Problem
- Solution
- Discussion
- See Also
- Chapter 16. Configuring and Customizing bash
- 16.1 bash Startup Options
- Problem
- Solution
- Discussion
- See Also
- 16.2 Customizing Your Prompt
- Problem
- Solution
- Discussion
- See Also
- 16.3 A Prompt Before Your Program Runs
- Problem
- Solution
- Discussion
- See Also
- 16.4 Changing Your $PATH Permanently
- Problem
- Solution
- Discussion
- See Also
- 16.5 Changing Your $PATH Temporarily
- Problem
- Solution
- Discussion
- See Also
- 16.6 Setting Your $CDPATH
- Problem
- Solution
- Discussion
- See Also
- 16.7 When Programs Are Not Found
- Problem
- Solution
- Discussion
- See Also
- 16.8 Shortening or Changing Command Names
- Problem
- Solution
- Discussion
- See Also
- 16.9 Adjusting Shell Behavior and Environment
- Problem
- Solution
- Discussion
- See Also
- 16.10 Adjusting readline Behavior Using .inputrc
- Problem
- Solution
- Discussion
- See Also
- 16.11 Keeping a Private Stash of Utilities by Adding ~/bin
- Problem
- Solution
- Discussion
- See Also
- 16.12 Using Secondary Prompts: $PS2, $PS3, $PS4
- Problem
- Solution
- Discussion
- See Also
- 16.13 Synchronizing Shell History Between Sessions
- Problem
- Solution
- Discussion
- See Also
- 16.14 Setting Shell History Options
- Problem
- Solution
- Discussion
- See Also
- 16.15 Creating a Better cd Command
- Problem
- Solution
- Discussion
- See Also
- 16.16 Creating and Changing Into a New Directory in One Step
- Problem
- Solution
- Discussion
- See Also
- 16.17 Getting to the Bottom of Things
- Problem
- Solution
- Discussion
- See Also
- 16.18 Adding New Features to bash Using Loadable Builtins
- Problem
- Solution
- Discussion
- See Also
- 16.19 Improving Programmable Completion
- Problem
- Solution
- Discussion
- See Also
- 16.20 Using Initialization Files Correctly
- Problem
- Solution
- Discussion
- See Also
- 16.21 Creating Self-Contained, Portable rc Files
- Problem
- Solution
- Discussion
- See Also
- 16.22 Getting Started with a Custom Configuration
- Problem
- Solution
- Discussion
- See Also
- Chapter 17. Housekeeping and Administrative Tasks
- 17.1 Renaming Many Files
- Problem
- Solution
- Discussion
- See Also
- 17.2 Using GNU Texinfo and info on Linux
- Problem
- Solution
- Discussion
- See Also
- 17.3 Unzipping Many ZIP Files
- Problem
- Solution
- Discussion
- See Also
- 17.4 Recovering Disconnected Sessions Using screen
- Problem
- Solution
- Discussion
- See Also
- 17.5 Sharing a Single bash Session
- Problem
- Solution
- Discussion
- See Also
- 17.6 Logging an Entire Session or Batch Job
- Problem
- Solution
- Discussion
- See Also
- 17.7 Clearing the Screen When You Log Out
- Problem
- Solution
- Discussion
- See Also
- 17.8 Capturing File Metadata for Recovery
- Problem
- Solution
- Discussion
- See Also
- 17.9 Creating an Index of Many Files
- Problem
- Solution
- Discussion
- See Also
- 17.10 Using diff and patch
- Problem
- Solution
- Discussion
- See Also
- 17.11 Counting Differences in Files
- Problem
- Solution
- Discussion
- See Also
- 17.12 Removing or Renaming Files Named with Special Characters
- Problem
- Solution
- Discussion
- See Also
- 17.13 Prepending Data to a File
- Problem
- Solution
- Discussion
- See Also
- 17.14 Editing a File in Place
- Problem
- Solution
- Discussion
- See Also
- 17.15 Using sudo on a Group of Commands
- Problem
- Solution
- Discussion
- See Also
- 17.16 Finding Lines That Appear in One File but Not in Another
- Problem
- Solution
- Discussion
- See Also
- 17.17 Keeping the Most Recent N Objects
- Problem
- Solution
- Discussion
- See Also
- 17.18 Writing to a Circular Log
- Problem
- Solution
- Discussion
- See Also
- 17.19 Circular Backups
- Problem
- Solution
- Discussion
- See Also
- 17.20 Grepping ps Output Without Also Getting the grep Process Itself
- Problem
- Solution
- Discussion
- See Also
- 17.21 Finding Out Whether a Process Is Running
- Problem
- Solution
- Discussion
- See Also
- 17.22 Adding a Prefix or Suffix to Output
- Problem
- Solution
- Discussion
- See Also
- 17.23 Numbering Lines
- Problem
- Solution
- Discussion
- See Also
- 17.24 Writing Sequences
- Problem
- Solution
- Discussion
- See Also
- 17.25 Emulating the DOS Pause Command
- Problem
- Solution
- Discussion
- See Also
- 17.26 Commifying Numbers
- Problem
- Solution
- Discussion
- See Also
- Chapter 18. Working Faster by Typing Less
- 18.1 Moving Quickly Among Arbitrary Directories
- Problem
- Solution
- Discussion
- See Also
- 18.2 Repeating the Last Command
- Problem
- Solution
- Description
- See Also
- 18.3 Running Almost the Same Command
- Problem
- Solution
- Discussion
- See Also
- 18.4 Quick Substitution
- Problem
- Solution
- Discussion
- See Also
- 18.5 Reusing Arguments
- Problem
- Solution
- Discussion
- See Also
- 18.6 Finishing Names for You
- Problem
- Solution
- Discussion
- See Also
- 18.7 Playing It Safe
- Problem
- Solution
- Discussion
- See Also
- 18.8 Big Changes, More Lines
- Problem
- Solution
- Discussion
- See Also
- Chapter 19. Tips and Traps: Common Goofs for Novices
- 19.1 Forgetting to Set Execute Permissions
- Problem
- Solution
- Discussion
- See Also
- 19.2 Fixing "No such file or directory" Errors
- Problem
- Solution
- Discussion
- See Also
- 19.3 Forgetting That the Current Directory Is Not in the $PATH
- Problem
- Solution
- Discussion
- See Also
- 19.4 Naming Your Script "test"
- Problem
- Solution
- Discussion
- See Also
- 19.5 Expecting to Change Exported Variables
- Problem
- Solution
- Discussion
- See Also
- 19.6 Forgetting Quotes Leads to "command not found" on Assignments
- Problem
- Solution
- Discussion
- See Also
- 19.7 Forgetting that Pattern Matching Alphabetizes
- Problem
- Solution
- Discussion
- 19.8 Forgetting that Pipelines Make Subshells
- Problem
- Solution
- Discussion
- See Also
- 19.9 Making Your Terminal Sane Again
- Problem
- Solution
- Discussion
- See Also
- 19.10 Deleting Files Using an Empty Variable
- Problem
- Solution
- Discussion
- See Also
- 19.11 Seeing Odd Behavior from printf
- Problem
- Solution
- Discussion
- See Also
- 19.12 Testing bash Script Syntax
- Problem
- Solution
- Discussion
- See Also
- 19.13 Debugging Scripts
- Problem
- Solution
- Discussion
- See Also
- 19.14 Avoiding "command not found" When Using Functions
- Problem
- Solution
- Discussion
- See Also
- 19.15 Confusing Shell Wildcards and Regular Expressions
- Problem
- Solution
- Discussion
- See Also
- Appendix A. Reference Lists
- bash Invocation
- Prompt String Customizations
- ANSI Color Escape Sequences
- Builtin Commands
- bash Reserved Words
- Builtin Shell Variables
- set Options
- shopt Options
- Test Operators
- I/O Redirection
- echo Options and Escape Sequences
- printf
- Examples
- See Also
- Date and Time String Formatting with strftime
- Pattern-Matching Characters
- extglob Extended Pattern-Matching Operators
- tr Escape Sequences
- readline Init File Syntax
- Emacs Mode Commands
- vi Control Mode Commands
- Table of ASCII Values
- Appendix B. Examples Included with bash
- bash Documentation and Examples
- Appendix C. Command-Line Processing
- Command-Line Processing Steps
- Quoting
- eval
- Appendix D. Revision Control
- Git
- Pros
- Cons
- Example
- See Also
- Bazaar
- Pros
- Cons
- Example
- See Also
- Mercurial
- Pros
- Cons
- Example
- See Also
- Subversion
- Pros
- Cons
- Example
- See Also
- Meld
- Pros
- Cons
- Example
- See Also
- etckeeper
- Pros
- Cons
- Example
- See Also
- Other
- Document Comparison
- Change Tracking and Versions
- Accessing These Features
- Appendix E. Building bash from Source
- Obtaining bash
- Unpacking the Archive
- What's in the Archive
- Documentation
- Configuring and Building bash
- Testing bash
- Potential Problems
- Installing bash as a Login Shell
- Examples
- Who Do I Turn To?
- Asking Questions
- Reporting Bugs
- Index
- About the Authors
System requirements
File format: PDF
Copy-Protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our eBook Help page.