$*, 406
$@, 406
${!array[*]}, 442
${!array[@]}, 442
${!prefix*}, 422
${!prefix@}, 422
${#parameter}, 422
${parameter^}, 426
${parameter^^}, 426
${parameter:-word}, 420
:?word}, 421
:+word}, 422
:word}, 421
${parameter,}, 426
${parameter,,}, 426
${parameter/pattern/string}, 424
${parameter//pattern/string}, 424
${parameter/#pattern/string}, 424
${parameter/%pattern/string}, 424
${parameter#pattern}, 423
${parameter##pattern}, 423
${parameter%pattern}, 424
${parameter%%pattern}, 424
$!, 457
$#, 402
$((expression)), 427
$0, 405
/, 19
(( )) compound command, 427, 432
[ command, 385
[[ ]] compound command, 377
a2ps command, 303
absolute pathnames, 9
American National Standards Institute (ANSI), 148
American Standard Code for Information Interchange. See ASCII
anchors, 228
anonymous FTP servers, 186
ANSI (American National Standards Institute), 148
ANSI escape codes, 148
ANSI.SYS, 148
Apache web server, 108
apropos command, 44
apt-cache command, 158
apt-get command, 158
aptitude command, 158
Arch, 156
arithmetic expansion, 64, 68, 335, 419, 427
arithmetic expressions, 64, 416, 427–429
arithmetic truth tests, 358, 427
arrays
append values to the end, 442
assigning values, 438
associative, 448
creating, 438
deleting, 443
determine number of elements, 441
finding used subscripts, 442
index, 438
multidimensional, 438
reading variables into, 366
sorting, 443
subscript, 438
two-dimensional, 437
ASCII (American Standard Code for Information Interchange), 70, 75, 206, 232, 303
bell character, 146
collation order, 232
groff output driver, 292
null character, 206
text, 17
aspell command, 275
assembler, 310
assembly language, 310
assignment operators, 430
associative arrays, 444
asynchronous execution, 456
audio CDs, 178
AWK programming language, 275, 434
back references, 271
backslash-escaped special characters, 146
backslash escape sequences, 70
backups, incremental, 216
basename command, 405
.bash_history, 77
.bash_login, 119
.bash_profile, 119
.bashrc, 119–121, 326, 347, 405
man page, 44
basic regular expressions, 234, 242–243, 273
bc command, 434
Berkeley Software Distribution (BSD), 301
bg command, 106
/bin, 19
bit mask, 89
bit operators, 431
/boot, 19
/boot/grub/grub.conf, 19
/boot/vmlinuz, 19
Bourne, Steve, 3
branching, 349
broken links, 36
BSD (Berkeley Software Distribution), 301
BSD style, 102
buffering, 170
build environment, 315
bzip2 command, 212
C++, 310
cal command, 5
cancel command, 307
carriage return, 17, 70, 146, 232–233, 247, 274–275, 301
case compound command, 396
case conversion, 425
cdrecord command, 178
cdrtools package, 178
character classes, 24–26, 230–231, 237, 267, 275
character ranges, 26, 230–231, 275
chgrp command, 95
child process, 100
Chrome, 329
chronological sorting, 253
client-server architecture, 457
COBOL programming language, 310
collation order, 118, 234, 267
traditional, 234
command line
arguments, 402
expansion, 61
command options, 14
commands
determining type, 40
documentation, 41
executable program files, 40, 311
executing as another user, 92
long options, 14
options, 14
command substitution, 67, 68, 415
comm command, 262
comments, 120, 124, 274, 324, 392
Common Unix Printing System (CUPS), 300
comparison operators, 432
compiler, 311
compiling, 310
compound commands
case, 396
for, 413
if, 350
until, 379
while, 376
compression algorithms, 210
conditional expressions, 387
configuration files, 17, 20, 115
./configure, 315
configure command, 315
constants, 333
continue command, 378
controlling terminal, 100
control operators
||, 361
COPYING (documentation file), 314
copying and pasting
in vim, 135
on the command line, 75
with X Windows System, 5
counting words in a file, 57
C programming language, 310, 416, 430, 432
cron job, 197
crossword puzzles, 229
csplit command, 278
CUPS (Common Unix Printing System), 300
cursor movement, 74
cutting and pasting on the command line, 75
data compression, 210
data redundancy, 210
data validation, 357
date command, 5
date formats, 253
dd command, 177
Debian, 156
Debian Style (.deb), 156
declare command, 426
defensive programming, 387, 391
/dev/cdrom, 171
/dev/dvd, 171
/dev/floppy, 171
device names, 170
device nodes, 19
/dev/null, 53
DHCP (Dynamic Host Configuration Protocol), 184
dictionary collation order, 232
diction program, 312
diff command, 263
Digital Restrictions Management (DRM), 157
directories, 91
copying, 26
current working, 8
hierarchical, 7
listing, 13
navigating, 7
OLDPWD variable, 118
parent, 8
PATH variable, 118
PWD variable, 118
root, 7
shared, 95
synchronizing, 219
transferring over a network, 219
viewing contents, 9
disk partitions, 167
DISPLAY variable, 118
dos2unix command, 248
dot-matrix printing, 298
dpkg command, 158
DRM (Digital Restrictions Management), 157
Dynamic Host Configuration Protocol (DHCP), 184
-e option, 71
-n option, 365
edge and corner cases, 391
EDITOR variable, 118
elif statement, 356
email, 246
embedded systems, 310
empty variables, 420
encrypted tunnels, 191
encryption, 268
enscript command, 305
aliases, 116
establishing, 118
examining, 116
shell functions, 116
subshells, 451
variables, 116
eqn command, 290
/etc, 20
/etc/bash.bashrc, 119
/etc/crontab, 20
/etc/group, 83
/etc/passwd, 20, 254, 258, 369
/etc/shadow, 83
/etc/sudoers, 92
executable files, 316
determining location, 41
PATH variable, 118
expand command, 258
expansions, 61
command substitution, 67
errors resulting from, 386
word-splitting, 68
expressions
ext4 filesystem, 175
extended regular expressions, 234
Extensible Markup Language (XML), 246
false command, 351
fg command, 106
FIFO (first-in, first-out), 457
file command, 16
file descriptor, 52
filenames, 206
case sensitive, 11
leading hyphens, 389
POSIX Portable Filename Character Set, 389
problems with, 388
files
access, 82
archiving, 217
attributes, 83
block special, 84
block special device, 198
changing file mode, 85
changing owner and group owner, 94
character special, 84
character special device, 198
copying, 31
copying over a network, 185
creating empty, 51
.deb, 156
determining contents, 16
device nodes, 19
execution access, 83
expressions, 352
finding, 195
hidden, 11
listing, 13
mode, 84
owner, 85
permissions, 82
read access, 83
regular, 198
.rpm, 156
shared library, 20
symbolic links, 198
synchronizing, 219
temporary, 455
text, 17
transferring over a network, 185, 217, 219
truncating, 51
type, 83
viewing contents, 17
write access, 83
file system corruption, 170
File Transfer Protocol (FTP), 186
filters, 55
Firefox, 329
first-in, first-out (FIFO), 457
floppy disks, 171
flow control
branching, 349
case compound command, 396
elif statement, 356
endless loop, 379
for compound command, 413
for loop, 413
function statement, 342
if compound command, 350
menu-driven, 372
reading files with while and until loops, 380
terminating a loop, 378
traps, 453
until loop, 379
while loop, 377
fmt command, 283
focus policy, 5
fold command, 282
for compound command, 413
Fortran programming language, 310, 416
Free Software Foundation, xxix
fsck command, 176
FTP (File Transfer Protocol), 186
ftp command, 186, 192, 312, 337
FUNCNAME variable, 405
function statement, 341
gcc (compiler), 311
genisoimage command, 178
Ghostscript, 300
gid (primary group ID), 83
global variables, 343
globbing, 24
GNOME, 3, 25, 37, 88, 121, 192
gnome-terminal, 4
GNU binutils package, 415
GNU C Compiler, 311
GNU coreutils package, 42, 45, 258
GNU/Linux, xxix
GNU Project, xxix, 14, 312–313
info command, 45
graphical user interface (GUI), xxvi, 5, 25, 37, 74, 88, 118
groff command, 290
group commands, 447
groups, 82
effective group ID (gid), 91
setgid, 91
GUI (graphical user interface), xxvi, 5, 25, 37, 74, 88, 118
gunzip command, 211
halt command, 110
hard disks, 165
creating, 33
listing, 34
hash mark (#), 4
head command, 58
header files, 314
“hello world” program, 324
help command, 41
here documents, 336
here strings, 369
high-level programming languages, 310
history
searching, 78
history command, 77
/home, 20
root account, 20
home directory, 8, 11, 63, 92, 118
HOME variable, 118
hostname, 146
Hypertext Markup Language (HTML), 246, 275, 291, 329, 340
ICMP ECHO_REQUEST, 182
id command, 82
IDE, 171
if compound command, 120, 385, 395
ifconfig command, 184
IFS (Internal Field Separator) variable, 368
incremental backups, 216
info files, 45
init program, 100
init scripts, 100
inodes, 34
INSTALL (documentation file), 314
installation wizard, 156
integers
expressions, 356
interactivity, 363
Internal Field Separator (IFS) variable, 368
interpreted languages, 311
interpreted programs, 311
interpreter, 311
I/O redirection, 49. See also redirection
ip command, 184
iso9660 (device type), 168, 179
job numbers, 105
jobspec, 106
join command, 260
Joliet extensions, 178
Joy, Bill, 128
kate command, 121
kedit command, 121
key fields, 251
killall command, 109
kill command, 107
killing text, 75
kill-ring, 75
Knuth, Donald, 290
Konqueror, 25
konsole (terminal emulator), 3
less command, 17, 55, 219, 241
lftp command, 187
/lib, 20
libraries, 311
LibreOffice Writer, 17
line continuation character, 327
line-continuation character, 274
line editors, 128
linker (program), 311
linking (process), 311
links
broken, 36
creating, 30
Linux community, 155
Linux distributions, 155
Arch, 156
CentOS, 156
Gentoo, 156
Linux Mint, 156
packaging systems, 155
Raspbian, 156
Red Hat Enterprise Linux, 156
Linux Filesystem Hierarchy Standard, 18, 326
Linux kernel, xxv, 19, 108, 163, 171, 265, 318
device drivers, 163
literal characters, 227
live CDs, xxviii
ln command, 30
locale command, 234
localhost, 189
local variables, 343
logical errors, 387
logical operations, 359
logical operators, 200
logical relationships, 200–203
Logical Volume Manager (LVM), 165
login prompt, 187
login shell, 83
long options, 14
loopback interface, 184
looping, 375
lossless compression, 210
lossy compression, 210
/lost+found, 20
lowercase to uppercase conversion, 426
lp command, 302
lpq command, 306
lpr command, 302
lprm command, 307
lpstat command, 306
long format, 15
viewing file attributes, 83
Lukyanov, Alexander, 187
LVM (Logical Volume Manager), 165
machine language, 310
maintenance, 327, 331, 332, 339
make command, 316
Makefile, 316
man command, 42
/media, 20
memory
assigned to each process, 100
displaying free, 6
Resident Set Size (RSS), 102
segmentation violation, 109
usage, 102
viewing usage, 111
virtual, 102
metacharacters, 228
meta key, 75
meta sequences, 228
mkfifo command, 458
mkfs command, 175
mkisofs command, 178
mktemp command, 455
mnemonics, 310
/mnt, 20
modal editor, 130
monospaced fonts, 300
Moolenaar, Bram, 128
more command, 18
mounting, 166
MP3 files, 95
multiple-choice decisions, 395
multiuser systems, 81
named pipes, 457
nano command, 128
netstat command, 184
networking, 181
default route, 185
Dynamic Host Configuration Protocol (DHCP), 184
encrypted tunnels, 191
examine network settings and statistics, 184
File Transfer Protocol (FTP), 186
firewalls, 182
Local Area Network (LAN), 185
man-in-the-middle attacks, 188
routers, 183
tracing the route to a host, 183
transferring files, 219
transporting files, 185
Virtual Private Network (VPN), 191
newline character, 146
newlines, 69
NEWS (documentation file), 314
nl command, 280
nroff command, 290
null character, 206
number bases, 427
Ogg Vorbis, 95
OLDPWD variable, 118
OpenOffice.org Writer, xxiii
OpenSSH, 189
operators
assignment, 430
binary, 386
comparison, 432
/opt, 20
owning files, 82
package files, 156
package maintainers, 157
package management, 155
Debian style (.deb), 156
finding packages, 158
high-level tools, 158
installing packages, 159
low-level tools, 158
package repositories, 157
Red Hat Style (.rpm), 156
removing packages, 160
updating packages , 160
packaging systems, 155
page description language, 246, 292, 299
pagers, 18
PAGER variable, 118
parameter expansion, 66, 68, 419
parent process, 100
passwd command, 97
passwords, 97
paste command, 258
PATA hard drives, 171
patch command, 265
patches, 263
pathname expansion, 62, 68, 414
pathnames, 240
completion, 76
PATH variable, 118, 120, 325, 341
PDF (Portable Document Format), 292, 302
Perl programming language, 40, 226, 275, 311, 434
permissions, 324
PHP programming language, 311
PID (process ID), 100
ping command, 182
in command substitution, 67
portable, 347
Portable Document Format (PDF), 292, 302
Portable Operating System Interface (POSIX). See POSIX (Portable Operating System Interface)
positional parameters, 401, 420–423
POSIX (Portable Operating System Interface), 178, 232–235, 361
character classes, 24–26, 231–233
PostScript, 246, 292, 299, 303
poweroff command, 110
primary group ID (gid), 83
printable characters, 232
printer buffers, 170
buffering output, 170
control codes, 298
daisy-wheel, 298
device names, 171
dot-matrix, 298
drivers, 300
graphical, 299
impact, 298
laser, 299
printing
determining system status, 306
history of, 298
Internet Printing Protocol, 306
monospaced fonts, 298
preparing text, 300
pretty, 303
proportional fonts, 299
spooling, 305
terminate print jobs, 307
viewing jobs, 306
/proc, 20
processes, 99
background, 105
controlling, 104
foreground, 105
interrupting, 105
job control, 105
killing, 107
nice, 101
PID (process ID), 100
SIGINT, 453
signals, 107
SIGTERM, 453
sleeping, 101
state, 101
stopping, 106
zombie, 101
process substitution, 451
production use, 390
.profile, 119
programmable completion, 77
ps2pdf command, 292
PS2 variable, 331
PS4 variable, 393
ps command, 100
pstree command, 111
PuTTY, 193
pwd command, 8
PWD variable, 118
Python programming language, 311
quoting, 67
double quotes, 68
escape character, 70
missing quote, 384
RAID (Redundant Array of Independent Disks), 165
raster image processor (RIP), 300
Readline, 74
README (documentation file), 46, 314
reboot command, 110
redirection
blocked pipe, 458
group commands and subshells, 448
here documents, 336
here strings, 369
standard error, 52
standard input, 53
standard output, 50
redirection operators
&>, 53
&>>, 53
<, 55
<<-, 337
<<<, 369
>, 50
>>, 51
|, 55
<(list), 451
>(list), 451
Redundant Array of Independent Disks (RAID), 165
regular expressions, 57, 225, 272, 357, 369
back references, 243
relational databases, 260
relative pathnames, 9
“release early, release often,” 390
removing duplicate lines in a file, 56
report generator, 329
repositories, 157
reset command, 19
reusable, 347
RIP (raster image processor), 300
rlogin command, 188
Rock Ridge extensions, 178
roff command, 290
ROT13 encoding, 268
rpm command, 158
rsync command, 219
rsync remote-update protocol, 220
Ruby programming language, 311
/sbin, 20
scalar variables, 437
Schilling, Jörg, 178
scp command, 192
script command, 80
sdiff command, 278
searching a file for patterns, 57
searching history, 78
Secure Shell (SSH), 188
Seward, Julian, 212
sftp command, 192
shebang, 325
shell builtins, 40
shell prompts, 4, 9, 79, 92, 104, 118, 145, 189, 331
shell scripts, 323
SHELL variable, 118
shutdown command, 110
signals, 453
single quotes, 69
Slackware, 156
sleep command, 378
soft link, 21
sort keys, 251
source code, 156, 162, 247, 309
source tree, 313
split command, 278
SSH (secure shell), 188
.ssh/known_hosts, 190
ssh program, 81
Stallman, Richard, xxv, xxix, 122, 235, 312
disposing of, 53
redirecting to a file, 52
redirecting, 53
standard output, 50
appending to a file, 51
disposing of, 53
redirecting standard error to, 52
redirecting to a file, 50
startup files, 118
stat command, 207
storage devices, 165
creating file systems, 173
device names, 170
disk partitions, 167
FAT32, 173
floppy disks, 171
formatting, 173
LVM (Logical Volume Manager), 168
partitions, 173
reading and writing directly, 177
repairing file systems, 176
unmounting, 169
USB flash drives, 177
stream editor, 268
strings
${parameter:offset}, 423
${parameter:offset:length}, 423
expressions, 354
extract a portion of, 423
length of, 422
perform search and replace upon, 424
remove leading portion of, 423
remove trailing portion of, 424
strings command, 415
style (program file), 314
su command, 92
Sun Microsystems, 128
symlink, 21
syntax errors, 383
syntax highlighting, 324
tables, 260
tail command, 58
tape archive, 213
tarballs, 313
tar command, 213
targets, 316
Task Manager, 104
Tatham, Simon, 193
tee command, 59
Teletype, 100
telnet command, 188
terminals, 75, 80, 82, 148, 290, 298
terminal sessions, 118
effect of .bashrc, 326
environment, 92
exiting, 6
login shell, 92
TERM variable, 118
using named pipes, 458
virtual, 6
with remote systems, 81
TERM variable, 118
ternary operator, 432
test cases, 391
test coverage, 391
TEX, 290
text, 17
adjusting line length, 282–283
ASCII, 17
carriage return, 248
comparing, 262
converting MS-DOS to Unix, 267
counting words, 57
cutting, 256
deleting duplicate lines, 254
deleting multiple blank lines, 248
detecting differences, 263
displaying common lines, 262
DOS format, 248
editors, 121
EDITOR variable, 118
expanding tabs, 258
files, 17
filtering, 55
formatting, 280
formatting for typesetters, 290
formatting tables, 293
joining, 260
linefeed character, 248
lowercase to uppercase conversion, 266
paginating, 286
preparing for printing, 300
removing duplicate lines, 56
searching for patterns, 57
spell checking, 275
substituting, 271
substituting tabs for spaces, 258
tab-delimited, 257
transliterating characters, 266
Unix format, 248
emacs, 122
interactive, 266
kedit, 121
kwrite, 121
line, 128
pico, 121
syntax highlighting, 328
vi, 121
visual, 128
for writing shell scripts, 324
tload command, 111
/tmp, 20
top command, 102
top-down design, 340
Torvalds, Linus, xxvii
touch command, 206–207, 221, 318, 410
traceroute command, 183
tracing, 392
transliterating characters, 266
traps, 453
tr command, 266
troff command, 290
true command, 351
TTY, 100
type command, 40
TZ variable, 118
umount command, 169
unalias command, 47
unary operator expected (error message), 386
unary operators, 428
unexpand command, 258
unexpected token, 385
Unix, xxvi
unix2dos command, 248
Unix System V, 301
unset command, 443
until compound command, 379
unzip command, 218
updatedb command, 197
upstream providers, 157
uptime, 341
uptime command, 346
Usenet, 268
users
accounts, 82
changing identity, 91
changing passwords, 97
home directory, 83
identity, 82
password, 83
setting default permissions, 89
/usr, 20
/usr/bin, 20
/usr/lib, 20
/usr/local, 21
/usr/local/sbin, 326
/usr/sbin, 21
/usr/share, 21
/usr/share/dict, 229
UUID, 167
validating input, 370
/var, 21
constants, 333
environment, 116
/var/log, 21
/var/log/messages, 21, 58, 171
vfat filesystem, 175
vi command, 127
virtual private network (VPN), 191
virtual terminals, 6
visual editors, 128
vmstat command, 111
VPN (virtual private network), 191
wc command, 57
web pages, 246
wget command, 188
whatis command, 44
What You See Is What You Get (WYSIWYG), 298
while compound command, 376
wildcards, 24, 54, 62, 226, 231
wodim command, 179
word-splitting, 69
world, 82
WYSIWYG (What You See Is What You Get), 298
xargs command, 205
xload command, 111
xlogo command, 104
XML (Extensible Markup Language), 246
yanking text, 75
yum command, 158
zgrep command, 243
zip command, 217
zless command, 46
18.190.155.49