Index
Bash Unix Shell Scripting: | ||
---|---|---|
ASCII Table |
Index
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)
-
^
^^
Uppercase conversion in parameter substitution
~ Tilde
-
~ home directory, corresponds to $HOME
= Equals sign
-
= Variable assignment operator
-
= String comparison operator
== String comparison operator
-
=~ Regular Expression match operator
< Left angle bracket
-
Is-less-than
-
Redirection
< stdin
<<< Here string
<> Opening a file for both reading and writing
> Right angle bracket
-
Is-greater-than
Integer comparison, within double parentheses
-
Redirection
> Redirect stdout to a file
>> Redirect stdout to a file, but append
i>&j Redirect file descriptor i to file descriptor j
>&j Redirect stdout to file descriptor j
>&2 Redirect stdout of a command to stderr
2>&1 Redirect stderr to stdout
&> Redirect both stdout and stderr of a command to a file
:> file Truncate file to zero length
| Pipe, a device for passing the output of a command to another command or to the shell
- (dash)
-
Prefix to default parameter, in parameter substitution
-
Indicating redirection from stdin or stdout
-
-- (double-dash)
; (semicolon)
-
\; Escaped semicolon, terminates a find command
-
;; Double-semicolon, terminator in a case option
Required when ...
-
;;& ;& Terminators in a case option (version 4+ of Bash).
: Colon
-
:> filename Truncate file to zero length
-
null command, equivalent to the true Bash builtin
-
Used in an anonymous here document
-
Used in an otherwise empty function
-
Used as a function name
! Negation operator, inverts exit status of a test or command
-
!= not-equal-to String comparison operator
? (question mark)
// Double forward slash, behavior of cd command toward
. (dot / period)
-
. Load a file (into a script), equivalent to source command
' ... ' (single quotes) strong quoting
" ... " (double quotes) weak quoting
,
-
,
,,
Lowercase conversion in parameter substitution
() Parentheses
-
( ... ) Command group; starts a subshell
-
( ... ) Enclose group of Extended Regular Expressions
-
>( ... )
<( ... ) Process substitution
-
... ) Terminates test-condition in case construct
-
(( ... )) Double parentheses, in arithmetic expansion
[ Left bracket, test construct
[ ]Brackets
-
Enclose character set to match in a Regular Expression
[[ ... ]] Double brackets, extended test construct
$ Anchor, in a Regular Expression
$( ... ) Command substitution, setting a variable with output of a command, using parentheses notation
` ... ` Command substitution, using backquotes notation
$[ ... ] Integer expansion (deprecated)
${ ... } Variable manipulation / evaluation
-
${var} Value of a variable
-
${#var} Length of a variable
-
${#@}
-
${parameter?err_msg} Parameter-unset message
-
${parameter-default}
${parameter:-default}
${parameter=default}
${parameter:=default} Set default parameter
-
${parameter+alt_value}
${parameter:+alt_value}
Alternate value of parameter, if set
-
${!var}
Indirect referencing of a variable, new notation
-
${!#}
Final positional parameter. (This is an indirect reference to $#.)
-
${!varprefix*}
${!varprefix@}
Match names of all previously declared variables beginning with varprefix
-
${string:position}
${string:position:length} Substring extraction
-
${var#Pattern}
${var##Pattern} Substring removal
-
${var%Pattern}
${var%%Pattern} Substring removal
-
${string/substring/replacement}
${string//substring/replacement}
${string/#substring/replacement}
${string/%substring/replacement} Substring replacement
$' ... ' String expansion, using escaped characters.
\ Escape the character following
-
\< ... \> Angle brackets, escaped, word boundary in a Regular Expression
-
\{ N \} "Curly" brackets, escaped, number of character sets to match in an Extended RE
-
\$$ Indirect reverencing of a variable, old-style notation
-
Escaping a newline, to write a multi-line command
&
-
&> Redirect both stdout and stderr of a command to a file
-
>&j Redirect stdout to file descriptor j
>&2 Redirect stdout of a command to stderr
-
i>&j Redirect file descriptor i to file descriptor j
2>&1 Redirect stderr to stdout
-
n<&- Close input file descriptor n
0<&-, <&- Close stdin
n>&- Close output file descriptor n
1>&-, >&- Close stdout
-
Command & Run job in background
# Hashmark, special symbol beginning a script comment
#! Sha-bang, special string starting a shell script
* Asterisk
-
** Exponentiation, arithmetic operator
-
** Extended globbing file-match operator
% Percent sign
-
Modulo, division-remainder arithmetic operation
-
Substring removal (pattern matching) operator
+ Plus sign
-
Prefix to alternate parameter, in parameter substitution
-
++ C-style variable increment, within double parentheses
* * *
Shell Variables
$_ Last argument to previous command
$- Flags passed to script, using set
$! Process ID of last background job
$@ 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
$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
-
Removing an alias, using unalias
Angle brackets, escaped, \< . . . \> word boundary in a Regular Expression
Anonymous here document, using :
-
combination operators, C-style
+= -= *= /= %=
In certain contexts, += can also function as a string concatenation operator.
-
more efficient than conventional arrays
-
Concatenating, example script
-
declare -a array_name
-
Empty arrays, empty elements, example script
-
array=( element1 element2 ... elementN)
Using command substitution
-
Loading a file into an array
-
Multidimensional, simulating
-
${#array_name[@]}
${#array_name[*]}
-
Passing an array to a function
-
Special properties, example script
-
String operations, example script
Arrow keys, detecting
ASCII
awk field-oriented text processing language
-
rand(), random function
-
Using export to pass a variable to an embedded awk script
* * *
Backlight, setting the brightness
Backquotes, used in command substitution
Base conversion, example script
-
Basics reviewed, script example
Basic commands, external
Batch files, DOS
bc, calculator utility
-
Template for calculating a script variable
Bison utility
-
Script example: Redirecting output of a a code block
Bootable flash drives, creating
-
Extended, {a..z}
-
With increment and zero-padding (new feature in Bash, version 4)
Brackets, [ ]
-
Enclose character set to match in a Regular Expression
Brackets, curly, {}, used in
break loop control command
-
Parameter (optional)
Builtins in Bash
* * *
-
Command-line parameters, handling
-
Globbing, filtering strings with
cat, concatentate file(s)
Colon, : , equivalent to the true Bash builtin
-
Cycling through the background colors, example script
-
Table of color escape sequences
-
Template, colored text on colored background
Comma operator, linking commands or operations
command_not_found_handle () builtin error-handling function (version 4+ of Bash)
-
$( ... ), preferred notation
Comment headers, special purpose
Commenting out blocks of code
-
Using an anonymous here document
-
Using an if-then construct
Compound comparison operators
continue loop control command
-
Control-C, break
-
Control-D, terminate / log out / erase
-
Control-G, BEL (beep)
-
Control-H, rubout
-
Control-J, newline
-
Control-M, carriage return
cron, scheduling daemon
C-style syntax , for handling variables
Curly brackets {}
* * *
Daemons, in UNIX-type OS
dc, calculator utility
dd, data duplicator command
-
Copying raw data to/from devices
-
File deletion, secure
-
Keystrokes, capturing
-
Random access on a data stream
-
Raspberry Pi, script for preparing a bootable SD card
-
Swapfiles, initializing
Decimal number, Bash interprets numbers as
declare builtin
-
case-modification options (version 4+ of Bash)
/dev directory
-
/dev/null pseudo-device file
-
/dev/urandom pseudo-device file, generating pseudorandom numbers with
-
/dev/zero, pseudo-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
-
/bin/echo, external echo command
elif, Contraction of else and if
Encrypting files, using openssl
esac, keyword terminating case construct
-eq , is-equal-to integer comparison test
Eratosthenes, Sieve of, algorithm for generating prime numbers
Escaped characters, special meanings of
-
Within $' ... ' string expansion
/etc/fstab (filesystem mount) file
/etc/passwd (user account) file
$EUID, Effective user ID
eval, Combine and evaluate expression(s), with variable expansion
-
Effects of, Example script
-
Forces reevaluation of arguments
Evaluation of octal/hex constants within [[ ... ]]
exec command, using in redirection
Exit and Exit status
-
exit command
-
Exit status (exit code, return status of a command)
Table, Exit codes with special meanings
Pipe exit status
Specified by a function return
Successful, 0
/usr/include/sysexits.h, system file listing C/C++ standard exit codes
Export, to make available variables to child processes
expr, Expression evaluator
-
? (question mark) Match zero / one characters
-
( ... ) Group of expressions
-
\{ N \} "Curly" brackets, escaped, number of character sets to match
* * *
factor, decomposes an integer into its prime factors
-
Application: Generating prime numbers
false, returns unsuccessful (1) exit status
Field, a group of characters that comprises an item of data
-
n<&- Close input file descriptor n
0<&-, <&- Close stdin
n>&- Close output file descriptor n
1>&-, >&- Close stdout
-
File handles in C, similarity to
Floating point numbers, Bash does not recognize
fold, a filter to wrap lines of text
Forking a child process
-
Arguments passed referred to by position
-
Capturing the return value of a function using echo
-
Colon as function name
-
Definition must precede first call to function
-
and recursion
-
Passing an array to a function
-
Passing pointers to a function
-
Redirecting stdin of a function
-
Multiple return values from a function, example script
Returning an array from a function
Return range limits, workarounds
-
Shift arguments passed to a function
* * *
Games and amusements
-
Anagrams, again
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
$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
-
Anonymous here documents, using :
Commenting out blocks of code
Self-documenting scripts
-
Function, supplying input to
-
Calculating the Golden Ratio
-
Closing limit string may not be indented
Dash option to limit string, <<-LimitString
-
Literal text output, for generating program code
-
Disabling parameter substitution
$HOME, user's home directory
$HOSTNAME, system host name
* * *
$Id parameter, in rcs (Revision Control System)
if [ condition ]; then ... test construct
$IFS, Internal field separator variable
in, keyword preceding [list] in a for loop
Initialization table, /etc/inittab
Inline group, i.e., code block
Interactive script, test for
Indirect referencing of variables
-
New notation, introduced in version 2 of Bash ( example script)
iptables, packet filtering and firewall utility
* * *
Job IDs, table
jot, Emit a sequence of integers. Equivalent to seq.
* * *
-
error, if missing
kill, terminate a process by process ID
-
Options (-l, -9)
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)
-
Invoking script with multiple names, using ln
-
symbolic links, ln -s
-
and recursion
Logical operators (&&, ||, etc.)
Logout file, the ~/.bash_logout file
Loopback device, mounting a file on a block device
-
break loop control command
-
continue loop control command
-
C-style loop within double parentheses
-
do (keyword), begins execution of commands within a loop
-
done (keyword), terminates a loop
-
for arg in [list]; do
Command substitution to generate [list]
Multiple parameters in each [list] element
Omitting [list], defaults to positional parameters
-
in, (keyword) preceding [list] in a for loop
-
Running a loop in the background, script example
-
Semicolon required, when do is on first line of loop
-
until loop
until [ condition-is-true ]; do
-
while loop
while [ condition ]; do
Function call inside test brackets
while read construct
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)
-
Man page editor (script)
mapfile builtin, loads an array with a text file
Morse code training script
Modulo, arithmetic remainder operator
-
Application: Generating prime numbers
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
nl, a filter to number lines of text
Noclobber, -C option to Bash to prevent overwriting of files
null variable assignment, avoiding
* * *
-o Logical OR compound comparison test
Obfuscation
-
Colon as function name
octal, base-8 numbers
od, octal dump
$OLDPWD Previous working directory
openssl encryption utility
Operator
Options, passed to shell or script on command line or by set command
* * *
-
${parameter+alt_value}
${parameter:+alt_value}
Alternate value of parameter, if set
-
${parameter-default}
${parameter:-default}
${parameter=default}
${parameter:=default}
-
${!varprefix*}
${!varprefix@}
-
${parameter?err_msg}
-
${parameter}
-
Case modification (version 4+ of Bash).
-
Table of parameter substitution
Parent / child process problem, a child process cannot export variables to a parent process
Parentheses
-
Enclose group of Extended Regular Expressions
-
Double parentheses, in arithmetic expansion
$PATH, the path (location of system binaries)
-
Appending directories to $PATH using the += operator.
Pathname, a filename that incorporates the complete path of a given file.
Perl, programming language
Perquackey-type anagramming game (Quackey script)
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
-
Avoiding unnecessary commands in a pipe
-
Exit status of a pipe
-
Pipefail, set -o pipefail option to indicate exit status within a pipe
-
$PIPESTATUS, exit status of last executed pipe
-
Piping output of a command to a script
-
Redirecting stdin, rather than using cat in a pipe
-
// (double forward slash), behavior of cd command toward
-
#!/bin/sh script header disables extended Bash features
-
CGI programming, using scripts for
-
Closing limit string in a here document, indenting
-
DOS-type newlines (\r\n) crash a script
-
eval, risk of using
-
Execute permission lacking for commands within a script
-
Exit status, anomalous
-
Exit status of arithmetic expression not equivalent to an error code
-
Export problem, child process to parent process
-
Extended Bash features not available
-
Failing to quote variables within test brackets
-
GNU command set, in cross-platform scripts
-
let misuse: attempting to set string variables
-
Multiple echo statements in a function whose output is captured
-
Numerical and string comparison operators not equivalent
= and -eq not interchangeable
-
Omitting terminal semicolon, in a curly-bracketed code block
-
Piping
echo to read (however, this problem can be circumvented)
-
Preserving whitespace within a variable, unintended consequences
-
Undocumented Bash features, danger of
-
Updates to Bash breaking older scripts
-
Variable names, inappropriate
-
Variables in a subshell, scope limited
-
Whitespace, misuse of
Pointers
Portability issues in shell scripting
-
A test suite script (Bash versus classic Bourne shell)
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
-
Generating primes using the factor command
-
Generating primes using the modulo operator
-
Sieve of Eratosthenes, example script
printf, formatted print command
/proc directory
-
Running processes, files describing
-
Writing to files in /proc, warning
Programmable completion (tab expansion)
Prompt
Pseudo-code, as problem-solving method
$PWD, Current working directory
* * *
Quackey, a Perquackey-type anagramming game (script)
Question mark, ?
-
Character match in an Extended Regular Expression
-
Whitespace, using quoting to preserve
* * *
Random numbers
-
$RANDOM, Bash function that returns a pseudorandom integer
-
Random sequence generation, using date command
-
Random sequence generation, using jot
-
Random string, generating
Raspberry Pi (single-board computer)
read, set value of a variable from stdin
-
Piping output of cat to read
-
Problems piping echo to read
-
Redirection from a file to read
-
$REPLY, default read variable
-
while read construct
readline library
Redirection
-
to reassign file descriptors
-
Introductory-level explanation of I/O redirection
-
Open a file for both reading and writing
<>filename
-
read input redirected from a file
-
2>&1
-
stdin / stdout, using -
-
> ... >>
-
>&j
-
file descriptori to file descriptor j
i>&j
-
stdout of a command to stderr
>&2
-
stdout and stderr of a command to a file
&>
-
tee, redirect to a file output of command(s) partway through a pipe
-
Test operators
-
^ (caret) Beginning-of-line
-
$ (dollar sign) Anchor
-
. (dot) Match single character
-
* (asterisk) Any number of characters
-
[ ] (brackets) Enclose character set to match
-
\ (backslash) Escape, interpret following character literally
-
\< ... \> (angle brackets, escaped) Word boundary
-
Extended REs
\{ \} Escaped "curly" brackets
[: :] POSIX character classes
$REPLY, Default value associated with read command
Restricted shell, shell (or script) with certain commands disabled
return, command that terminates a function
-
Running scripts in sequence, without user intervention
* * *
Scope of a variable, definition
Script options, set at command line
Scripting routines, library of useful definitions and functions
Secondary prompt, $PS2
-
nmap, network mapper / port scanner
-
Viruses, trojans, and worms in scripts
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
-
set -u, Abort script with error message if attempting to use an undeclared variable.
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
Simulations
Single quotes (' ... ') strong quoting
Socket, a communication node associated with an I/O port
Sorting
source, execute a script or, within a script, import a file
Spam, dealing with
Stack
-
Emulating a push-down stack, example script
Standard Deviation, example script
Startup files, Bash
Stopwatch, example script
Strings
-
${#string}
-
Manipulation, using awk
-
Null string, testing for
-
Protecting strings from expansion and/or reinterpretation, script example
Unprotecting strings, script example
-
strchr(), equivalent of
-
strlen(), equivalent of
-
strings command, find printable strings in a binary or data file
-
Substring extraction
-
Substring index (numerical position in string)
-
Substring matching, using expr
-
Substring replacement
${string/substring/replacement}
${string//substring/replacement}
${string/#substring/replacement}
-
Table of string/substring manipulation and extraction operators
Strong quoting ' ... '
Stylesheet for writing scripts
-
Variables, $BASH_SUBSHELL and $SHLVL
-
Variables in a subshell
scope limited, but ...
su Substitute user, log on as a different user or as root
suid (set user id) file flag
-
suid commands inside a script, not advisable
* * *
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
-
external command, /usr/bin/test (equivalent to /usr/bin/[)
Test operators
-
-a Logical AND compound comparison
-
-e File exists
-
-eq is-equal-to (integer comparison)
-
-ge greater-than or equal (integer comparison)
-
-gt greater-than (integer comparison)
-
-le less-than or equal (integer comparison)
-
-lt less-than (integer comparison)
-
-n not-zero-length (string comparison)
-
-ne not-equal-to (integer comparison)
-
-o Logical OR compound comparison
-
-u suid flag set, file test
-
-z is-zero-length (string comparison)
-
= is-equal-to (string comparison)
== is-equal-to (string comparison)
-
< less-than (string comparison)
-
< less-than, (integer comparison, within double parentheses)
-
<= less-than-or-equal, (integer comparison, within double parentheses)
-
> greater-than (string comparison)
-
> greater-than, (integer comparison, within double parentheses)
-
>= greater-than-or-equal, (integer comparison, within double parentheses)
-
|| Logical OR
-
&& Logical AND
-
! Negation operator, inverts exit status of a test
!= not-equal-to (string comparison)
-
Tables of test operators
Timed input
Tips and hints for Bash scripts
-
Array, as return value from a function
Associative array more efficient than a numerically-indexed array
-
Capturing the return value of a function, using echo
-
CGI programming, using scripts for
-
Comment blocks
Using anonymous here documents
Using if-then constructs
-
Comment headers, special purpose
-
C-style syntax , for manipulating variables
-
Filenames prefixed with a dash, removing
-
Filter, feeding output back to same filter
-
Function return value workarounds
-
Library of useful definitions and functions
-
null variable assignment, avoiding
-
Passing an array to a function
-
$PATH, appending to, using the += operator.
-
Prepending lines at head of a file
-
Progress bar template
-
Redirecting a test to /dev/null to suppress output
-
Running scripts in sequence without user intervention, using run-parts
-
Script as embedded command
-
Script portability
-
Setting script variable to a block of embedded sed or awk code
-
Speeding up script execution by disabling unicode
-
Subshell variable, accessing outside the subshell
-
Testing a variable to see if it contains only digits
-
Widgets, invoking from a script
$TMOUT, Timeout interval
Token, a symbol that may expand to a keyword or command
tput, terminal-control command
tr, character translation filter
-
Soundex, example script
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
uname, output system information
Unicode, encoding standard for representing letters and symbols
-
Disabling unicode to optimize script
uniq, filter to remove duplicate lines from a sorted file
unset, delete a shell variable
until loop
until [ condition-is-true ]; do
* * *
Variables
-
Block of sed or awk code, setting a variable to
-
declare, to modify the properties of variables
-
Deleting a shell variable using unset
-
Expansion / Substring replacement operators
-
eval variable1=\$$variable2
${!variable}
-
Integer / string (variables are untyped)
-
${#var}
-
Name and value of a variable, distinguishing between
-
Null string, testing for
-
Null variable assignment, avoiding
-
In subshell not visible to parent shell
-
Testing a variable if it contains only digits
-
Typing, restricting the properties of a variable
-
Undeclared, error message
-
Unquoted variable, splitting
* * *
wait, suspend script execution
Weak quoting " ... "
while loop
while [ condition ]; do
-
while read construct
Whitespace, spaces, tabs, and newline characters
-
Preceding closing limit string in a here document, error
-
Quoting, to preserve whitespace within strings or variables
-
[:space:], POSIX character class
who, information about logged on users
Wild card characters
Word splitting
Wrapper, shell
* * *
xargs, Filter for grouping arguments
-
Processes arguments one at a time
-
Whitespace, handling
* * *
* * *
Zombie, a process that has terminated, but not yet been killed by its parent