If you want to investigate specific topics rather than read the entire book through, here is a chapter-by-chapter summary:
Chapter 1 , introduces bash and tells you how to install it as your login shell. Then it surveys the basics of interactive shell use, including overviews of the UNIX file and directory scheme, standard I/O, and background jobs.
Chapter 2 , discusses the shell's command history mechanism (including the emacs - and vi -editing modes), history substitution and the fc history command, and key bindings with readline and bind .
Chapter 3 , covers ways to customize your shell environment without programming, by using the startup and environment files. Aliases, options, and shell variables are the customization techniques discussed.
Chapter 4 , is an introduction to shell programming. It explains the basics of shell scripts and functions, and discusses several important "nuts-and-bolts" programming features: string manipulation operators, brace expansion, command-line arguments (positional parameters), and command substitution.
Chapter 5 , continues the discussion of shell programming by describing command exit status, conditional expressions, and the shell's flow-control structures: if , for , case , select , while , and until .
Chapter 6 , goes into depth about positional parameters and command-line option processing, then discusses special types and properties of variables, integer arithmetic, and arrays.
Chapter 7 , gives a detailed description of bash I/O. All of the shell's I/O redirectors are covered, as are the line-at-a-time I/O commands read and echo . Then the chapter discusses the shell's command-line processing mechanism and the eval command.
Chapter 8 , covers process- related issues in detail. It starts with a discussion of job control, then gets into various low-level information about processes, including process IDs, signals, and traps. The chapter then moves to a higher level of abstraction to discuss coroutines and subshells.
Chapter 9 , discusses various debugging techniques, like trace and verbose modes, and the "fake" signal traps. We then present in detail a useful shell tool, written using the shell itself: a bash debugger.
Chapter 10 , gives information for system administrators, including techniques for implementing system-wide shell customization and features related to system security.
Chapter 11 , shows you how to go about getting bash and how to install it on your system. It also outlines what to do in the event of problems along the way.
Appendix A compares bash to several similar shells , including the standard Bourne shell, the IEEE 1003.2 POSIX shell standard, the Korn shell ( ksh ) and the public-domain Korn shell ( pdksh ), and the MKS Toolkit shell for MS-DOS and OS/2.
Appendix B contains lists of shell invocation options, built-in commands, built-in variables, conditional test operators, options, I/O redirection, and emacs and vi editing mode commands.
Appendix C gives information on writing and compiling your own loadable built-ins .
Appendix D lists the bash reserved words and provides a complete BNF description of the shell.
Appendix E lists the ways that you can obtain the major scripts in this book for free, using anonymous FTP or electronic mail.