Bash Reference Manual

Transcription

Bash Reference ManualReference Documentation for BashEdition 5.1, for Bash Version 5.1.December 2020Chet Ramey, Case Western Reserve UniversityBrian Fox, Free Software Foundation

This text is a brief description of the features that are present in the Bash shell (version5.1, 21 December 2020).This is Edition 5.1, last updated 21 December 2020, of The GNU Bash Reference Manual,for Bash, Version 5.1.Copyright c 1988–2020 Free Software Foundation, Inc.Permission is granted to copy, distribute and/or modify this document under theterms of the GNU Free Documentation License, Version 1.3 or any later versionpublished by the Free Software Foundation; with no Invariant Sections, noFront-Cover Texts, and no Back-Cover Texts. A copy of the license is includedin the section entitled “GNU Free Documentation License”.

iTable of Contents1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.11.2What is Bash? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1What is a shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Basic Shell Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.1Shell Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.1.1 Shell Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.1.3 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Shell Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.1 Reserved Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.2 Simple Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.3 Pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.4 Lists of Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2.5 Compound Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.5.1 Looping Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.5.2 Conditional Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.2.5.3 Grouping Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.6 Coprocesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.7 GNU Parallel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.3 Shell Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.4 Shell Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.4.1 Positional Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.4.2 Special Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.5 Shell Expansions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.5.1 Brace Expansion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.5.2 Tilde Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.5.3 Shell Parameter Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.5.4 Command Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.5.5 Arithmetic Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.5.6 Process Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.5.7 Word Splitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.5.8 Filename Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.5.8.1 Pattern Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.5.9 Quote Removal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

ii3.6Redirections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.6.1 Redirecting Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.6.2 Redirecting Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.6.3 Appending Redirected Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.6.4 Redirecting Standard Output and Standard Error . . . . . . . . . 373.6.5 Appending Standard Output and Standard Error . . . . . . . . . 373.6.6 Here Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.6.7 Here Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.6.8 Duplicating File Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.6.9 Moving File Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.6.10 Opening File Descriptors for Reading and Writing . . . . . . . 383.7 Executing Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.7.1 Simple Command Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.7.2 Command Search and Execution . . . . . . . . . . . . . . . . . . . . . . . . . . 393.7.3 Command Execution Environment . . . . . . . . . . . . . . . . . . . . . . . . 403.7.4 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.7.5 Exit Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.7.6 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.8 Shell Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424Shell Builtin Commands . . . . . . . . . . . . . . . . . . . . . . . 444.14.24.3Bourne Shell Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Bash Builtin Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Modifying Shell Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.3.1 The Set Builtin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.3.2 The Shopt Builtin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.4 Special Builtins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725Shell Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.15.26Bourne Shell Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Bash Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Bash Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.16.26.3Invoking Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Bash Startup Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Interactive Shells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906.3.1 What is an Interactive Shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916.3.2 Is this Shell Interactive? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916.3.3 Interactive Shell Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916.4 Bash Conditional Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926.5 Shell Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946.6 Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956.7 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966.8 The Directory Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986.8.1 Directory Stack Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986.9 Controlling the Prompt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996.10 The Restricted Shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

iii6.116.127Job Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087.17.27.38Bash POSIX Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Shell Compatibility Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Job Control Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Job Control Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Job Control Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Command Line Editing. . . . . . . . . . . . . . . . . . . . . . . 1128.18.2Introduction to Line Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112Readline Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128.2.1 Readline Bare Essentials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138.2.2 Readline Movement Commands . . . . . . . . . . . . . . . . . . . . . . . . . . 1138.2.3 Readline Killing Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148.2.4 Readline Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148.2.5 Searching for Commands in the History . . . . . . . . . . . . . . . . . . 1148.3 Readline Init File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158.3.1 Readline Init File Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158.3.2 Conditional Init Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238.3.3 Sample Init File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1258.4 Bindable Readline Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1288.4.1 Commands For Moving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1288.4.2 Commands For Manipulating The History . . . . . . . . . . . . . . . 1298.4.3 Commands For Changing Text. . . . . . . . . . . . . . . . . . . . . . . . . . . 1318.4.4 Killing And Yanking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1328.4.5 Specifying Numeric Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . 1338.4.6 Letting Readline Type For You . . . . . . . . . . . . . . . . . . . . . . . . . . 1348.4.7 Keyboard Macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1358.4.8 Some Miscellaneous Commands . . . . . . . . . . . . . . . . . . . . . . . . . . 1368.5 Readline vi Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1388.6 Programmable Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1388.7 Programmable Completion Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . 1408.8 A Programmable Completion Example. . . . . . . . . . . . . . . . . . . . . . . . 1449Using History Interactively . . . . . . . . . . . . . . . . . . 1479.19.29.3Bash History Facilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147Bash History Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147History Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1499.3.1 Event Designators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1509.3.2 Word Designators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1519.3.3 Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

iv10Installing Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15310.110.210.310.410.510.610.710.8Basic Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153Compilers and Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Compiling For Multiple Architectures . . . . . . . . . . . . . . . . . . . . . . . . 154Installation Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Specifying the System Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Bash Reference Manual Reference Documentation for Bash Edition 5.1, for Bash Version 5.1. December 2020 Chet Ramey, Case Western Reserve University Brian Fox, Free Software Foundation . This text is a brief description of the features that are present in the Bash shell (version 5.1, 21 December 2020). This is Edition 5.1, last updated 21 December 2020, of The GNU Bash Reference Manual, for .