Bash reference manual

  • View
    321

  • Download
    7

Embed Size (px)

Text of Bash reference manual

  • 1.Bash Reference ManualReference Documentation for Bash Edition 4.2, for Bash Version 4.2.December 2010Chet Ramey, Case Western Reserve UniversityBrian Fox, Free Software Foundation

2. This text is a brief description of the features that are present in the Bash shell (version4.2, 28 December 2010).This is Edition 4.2, last updated 28 December 2010, of The GNU Bash Reference Manual,for Bash, Version 4.2.Copyright c 19882011 Free Software Foundation, Inc.Permission is granted to make and distribute verbatim copies of this manual provided thecopyright notice and this permission notice are preserved on all copies. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being A GNU Manual, and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled GNU Free Documentation License. (a) The FSFs Back-Cover Text is: You are free to copy and modify this GNU manual. Buying copies from GNU Press supports the FSF in developing GNU and promoting software freedom.Published by the Free Software Foundation59 Temple Place, Suite 330,Boston, MA 02111-1307USA 3. iTable of Contents1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1 What is Bash? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 What is a shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Basic Shell Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.1 Shell Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1.1 Shell Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1.2 Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.1.2.1 Escape Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.1.2.2 Single Quotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.1.2.3 Double Quotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.1.2.4 ANSI-C Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.1.2.5 Locale-Specific Translation. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1.3 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Shell Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2.1 Simple Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2.2 Pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2.3 Lists of Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2.4 Compound Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2.4.1 Looping Constructs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.4.2 Conditional Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.4.3 Grouping Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.5 Coprocesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.6 GNU Parallel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3 Shell Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4 Shell Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.1 Positional Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.2 Special Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.5 Shell Expansions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.5.1 Brace Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.5.2 Tilde Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.5.3 Shell Parameter Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.5.4 Command Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.5 Arithmetic Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.6 Process Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.7 Word Splitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5.8 Filename Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.5.8.1 Pattern Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.5.9 Quote Removal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.6 Redirections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4. iiBash Reference Manual3.6.1 Redirecting Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283.6.2 Redirecting Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.6.3 Appending Redirected Output . . . . . . . . . . . . . . . . . . . . . . . . . . . .293.6.4 Redirecting Standard Output and Standard Error . . . . . . . . 293.6.5 Appending Standard Output and Standard Error . . . . . . . . . 293.6.6 Here Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.6.7 Here Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.6.8 Duplicating File Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.6.9 Moving File Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303.6.10 Opening File Descriptors for Reading and Writing . . . . . . .30 3.7 Executing Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303.7.1 Simple Command Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.7.2 Command Search and Execution . . . . . . . . . . . . . . . . . . . . . . . . . 313.7.3 Command Execution Environment. . . . . . . . . . . . . . . . . . . . . . . . 323.7.4 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333.7.5 Exit Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333.7.6 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 3.8 Shell Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 Shell Builtin Commands . . . . . . . . . . . . . . . . . . . . . . 37 4.1 Bourne Shell Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2 Bash Builtin Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.3 Modifying Shell Behavior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.3.1 The Set Builtin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .534.3.2 The Shopt Builtin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57 4.4 Special Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .625 Shell Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.1 Bourne Shell Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.2 Bash Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 Bash Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 6.1 Invoking Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 6.2 Bash Startup Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 6.3 Interactive Shells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .766.3.1 What is an Interactive Shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .766.3.2 Is this Shell Interactive? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776.3.3 Interactive Shell Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.4 Bash Conditional Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78 6.5 Shell Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 6.6 Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 6.7 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82 6.8 The Directory Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.8.1 Directory Stack Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.9 Controlling the Prompt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84 6.10 The Restricted Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 6.11