This index / glossary / quick-reference lists many of the important topics covered in the text. Terms are arranged in approximate ASCII sorting order, modified as necessary for enhanced clarity.

Note that commands are indexed in Part 4.

* * *

^ (caret)

~ Tilde

= Equals sign

< Left angle bracket

> Right angle bracket

| Pipe, a device for passing the output of a command to another command or to the shell

|| Logical OR test operator

- (dash)

; (semicolon)

: Colon

! Negation operator, inverts exit status of a test or command

? (question mark)

// Double forward slash, behavior of cd command toward

. (dot / period)

' ... ' (single quotes) strong quoting

" ... " (double quotes) weak quoting


() Parentheses

[ Left bracket, test construct

[ ]Brackets

[[ ... ]] Double brackets, extended test construct

$ Anchor, in a Regular Expression

$ Prefix to a variable name

$( ... ) Command substitution, setting a variable with output of a command, using parentheses notation

` ... ` Command substitution, using backquotes notation

$[ ... ] Integer expansion (deprecated)

${ ... } Variable manipulation / evaluation

$' ... ' String expansion, using escaped characters.

\ Escape the character following


# Hashmark, special symbol beginning a script comment

#! Sha-bang, special string starting a shell script

* Asterisk

% Percent sign

+ Plus sign

* * *

Shell Variables

$_ Last argument to previous command

$- Flags passed to script, using set

$! Process ID of last background job

$? Exit status of a command

$@ All the positional parameters, as separate words

$* All the positional parameters, as a single word

$$ Process ID of the script

$# Number of arguments passed to a function, or to the script itself

$0 Filename of the script

$1 First argument passed to script

$9 Ninth argument passed to script

Table of shell variables

* * * * * *

-a Logical AND compound comparison test

Address database, script example

Advanced Bash Scripting Guide, where to download



And list

And logical operator &&

Angle brackets, escaped, \< . . . \> word boundary in a Regular Expression

Anonymous here document, using :


Arithmetic expansion

Arithmetic operators


Arrow keys, detecting


awk field-oriented text processing language

* * *

Backlight, setting the brightness

Backquotes, used in command substitution

Base conversion, example script




Basic commands, external

Batch files, DOS

Batch processing

bc, calculator utility


Bison utility

Bitwise operators

Block devices

Blocks of code

Bootable flash drives, creating

Brace expansion

Brackets, [ ]

Brackets, curly, {}, used in

break loop control command

Builtins in Bash

* * *

case construct

cat, concatentate file(s)

Character devices


Child processes

Colon, : , equivalent to the true Bash builtin

Colorizing scripts

Comma operator, linking commands or operations

Command-line options

command_not_found_handle () builtin error-handling function (version 4+ of Bash)

Command substitution

Comment headers, special purpose

Commenting out blocks of code

Communications and hosts

Compound comparison operators

Compression utilities

continue loop control command

Control characters


cron, scheduling daemon

C-style syntax , for handling variables

Crossword puzzle solver


Curly brackets {}

* * *

Daemons, in UNIX-type OS


dc, calculator utility

dd, data duplicator command

Debugging scripts

Decimal number, Bash interprets numbers as

declare builtin

Default parameters

/dev directory

Device file

dialog, utility for generating dialog boxes in a script

$DIRSTACK directory stack

Disabled commands, in restricted shells

do keyword, begins execution of commands within a loop

done keyword, terminates a loop

DOS batch files, converting to shell scripts

DOS commands, UNIX equivalents of (table)

dot files, "hidden" setup and configuration files

Double brackets [[ ... ]] test construct

Double parentheses (( ... )) arithmetic expansion/evaluation construct

Double quotes " ... " weak quoting

Double-spacing a text file, using sed

* * *

-e File exists test


elif, Contraction of else and if


Encrypting files, using openssl

esac, keyword terminating case construct

Environmental variables

-eq , is-equal-to integer comparison test

Eratosthenes, Sieve of, algorithm for generating prime numbers

Escaped characters, special meanings of

/etc/fstab (filesystem mount) file

/etc/passwd (user account) file

$EUID, Effective user ID

eval, Combine and evaluate expression(s), with variable expansion

Evaluation of octal/hex constants within [[ ... ]]

exec command, using in redirection


Exit and Exit status

Export, to make available variables to child processes

expr, Expression evaluator

Extended Regular Expressions

* * *

factor, decomposes an integer into its prime factors

false, returns unsuccessful (1) exit status

Field, a group of characters that comprises an item of data

Files / Archiving

File descriptors

File encryption



Floating point numbers, Bash does not recognize

fold, a filter to wrap lines of text

Forking a child process

for loops


* * *

Games and amusements

getopt, external command for parsing script command-line arguments

getopts, Bash builtin for parsing script command-line arguments

Global variable

Globbing, filename expansion

Golden Ratio (Phi)

-ge , greater-than or equal integer comparison test

-gt , greater-than integer comparison test

groff, text markup and formatting language

Gronsfeld cipher

$GROUPS, Groups user belongs to

gzip, compression utility

* * *

Hashing, creating lookup keys in a table

head, echo to stdout lines at the beginning of a text file

help, gives usage summary of a Bash builtin

Here documents

History commands

$HOME, user's home directory

Homework assignment solver

$HOSTNAME, system host name

* * *

$Id parameter, in rcs (Revision Control System)

if [ condition ]; then ... test construct

$IFS, Internal field separator variable

Integer comparison operators

in, keyword preceding [list] in a for loop

Initialization table, /etc/inittab

Inline group, i.e., code block

Interactive script, test for

I/O redirection

Indirect referencing of variables

iptables, packet filtering and firewall utility


* * *

Job IDs, table

jot, Emit a sequence of integers. Equivalent to seq.

Just another Bash hacker!

* * *


kill, terminate a process by process ID

killall, terminate a process by name

killall script in /etc/rc.d/init.d

* * *

lastpipe shell option

-le , less-than or equal integer comparison test

let, setting and carrying out arithmetic operations on variables

Limit string, in a here document

$LINENO, variable indicating the line number where it appears in a script

Link, file (using ln command)

List constructs

Local variables


Logical operators (&&, ||, etc.)

Logout file, the ~/.bash_logout file

Loopback device, mounting a file on a block device


Loopback devices

-lt , less-than integer comparison test

* * *

m4, macro processing language

$MACHTYPE, Machine type

Magic number, marker at the head of a file indicating the file type

Makefile, file containing the list of dependencies used by make command

man, manual page (lookup)

mapfile builtin, loads an array with a text file

Math commands


Morse code training script

Modulo, arithmetic remainder operator

Mortgage calculations, example script

* * *

-n String not null test

Named pipe, a temporary FIFO buffer

nc, netcat, a network toolkit for TCP and UDP ports

-ne, not-equal-to integer comparison test

Negation operator, !, reverses the sense of a test

netstat, Network statistics

Network programming

nl, a filter to number lines of text

Noclobber, -C option to Bash to prevent overwriting of files

NOT logical operator, !

null variable assignment, avoiding

* * *

-o Logical OR compound comparison test


octal, base-8 numbers

od, octal dump

$OLDPWD Previous working directory

openssl encryption utility


Options, passed to shell or script on command line or by set command

Or list

Or logical operator, ||

* * *

Parameter substitution

Parent / child process problem, a child process cannot export variables to a parent process


$PATH, the path (location of system binaries)

Pathname, a filename that incorporates the complete path of a given file.

Perl, programming language

Perquackey-type anagramming game (Quackey script)

Petals Around the Rose

PID, Process ID, an identification number assigned to a running process.

Pipe, | , a device for passing the output of a command to another command or to the shell



Portability issues in shell scripting

Positional parameters

POSIX, Portable Operating System Interface / UNIX

$PPID, process ID of parent process

Precedence, operator

Prepending lines at head of a file, script example

Prime numbers

printf, formatted print command

/proc directory


Process substitution

Programmable completion (tab expansion)


Pseudo-code, as problem-solving method

$PWD, Current working directory

* * *

Quackey, a Perquackey-type anagramming game (script)

Question mark, ?


* * *

Random numbers

Raspberry Pi (single-board computer)


read, set value of a variable from stdin

readline library



Reference Cards

Regular Expressions

$REPLY, Default value associated with read command

Restricted shell, shell (or script) with certain commands disabled

return, command that terminates a function


* * *

Scope of a variable, definition

Script options, set at command line

Scripting routines, library of useful definitions and functions

Secondary prompt, $PS2

Security issues

sed, pattern-based programming language

select, construct for menu building


Semicolon required, when do keyword is on first line of loop

seq, Emit a sequence of integers. Equivalent to jot.

set, Change value of internal script variables

Shell script, definition of

Shell wrapper, script embedding a command or utility

shift, reassigning positional parameters

$SHLVL, shell level, depth to which the shell (or script) is nested

shopt, change shell options

Signal, a message sent to a process


Single quotes (' ... ') strong quoting

Socket, a communication node associated with an I/O port


source, execute a script or, within a script, import a file

Spam, dealing with

Special characters


Standard Deviation, example script

Startup files, Bash

stdin and stdout

Stopwatch, example script


Strong quoting ' ... '

Stylesheet for writing scripts


su Substitute user, log on as a different user or as root

suid (set user id) file flag

Symbolic links


* * *

Tab completion

Table lookup, script example

tail, echo to stdout lines at the (tail) end of a text file

tar, archiving utility

tee, redirect to a file output of command(s) partway through a pipe


test command

Test constructs

Test operators

Text and text file processing

Time / Date

Timed input

Tips and hints for Bash scripts

$TMOUT, Timeout interval

Token, a symbol that may expand to a keyword or command

tput, terminal-control command

tr, character translation filter

Trap, specifying an action upon receipt of a signal

Trinary (ternary) operator, C-style, var>10?88:99

true, returns successful (0) exit status

typeset builtin

* * *

$UID, User ID number

unalias, to remove an alias

uname, output system information

Unicode, encoding standard for representing letters and symbols

Uninitialized variables

uniq, filter to remove duplicate lines from a sorted file

unset, delete a shell variable

until loop

until [ condition-is-true ]; do

* * *


* * *

wait, suspend script execution

Weak quoting " ... "

while loop

while [ condition ]; do

Whitespace, spaces, tabs, and newline characters

who, information about logged on users


Wild card characters

Word splitting

Wrapper, shell

* * *

xargs, Filter for grouping arguments

* * *


* * *

-z String is null

Zombie, a process that has terminated, but not yet been killed by its parent