Part 1 – Introduction.........................................................................1
1 – Introduction................................................................................................2
Why Use The Command Line?.......................................................................................2
What This Book Is About.................................................................................................3
Who Should Read This Book..........................................................................................3
What's In This Book.........................................................................................................4
How To Read This Book..................................................................................................5
Prerequisites...............................................................................................................5
Why I Don't Call It “GNU/Linux”.............................................................................5
Acknowledgments...........................................................................................................6
Your Feedback Is Needed!..............................................................................................7
Further Reading...............................................................................................................7
Colophon.........................................................................................................................7
Part 2 – Learning The Shell..............................................................9
2 – What Is The Shell?...................................................................................10
Terminal Emulators........................................................................................................10
Your First Keystrokes....................................................................................................10
Command History.....................................................................................................11
Cursor Movement.....................................................................................................11
A Few Words About Mice And Focus...................................................................11
Try Some Simple Commands........................................................................................12
Ending A Terminal Session............................................................................................13
The Console Behind The Curtain........................................................................13
Further Reading.............................................................................................................13
3 – Navigation.................................................................................................14
Understanding The File System Tree............................................................................14
The Current Working Directory......................................................................................14
Listing The Contents Of A Directory..............................................................................15
Changing The Current Working Directory.....................................................................16
Absolute Pathnames................................................................................................16
Relative Pathnames.................................................................................................16
Some Helpful Shortcuts............................................................................................18
Important Facts About Filenames........................................................................18
4 – Exploring The System.............................................................................20
More Fun With ls...........................................................................................................20
Options And Arguments............................................................................................21
A Longer Look At Long Format.................................................................................22
Determining A File's Type With file................................................................................23
Viewing File Contents With less....................................................................................24
What Is “Text”?.....................................................................................................24
Less Is More........................................................................................................26
A Guided Tour................................................................................................................26
Symbolic Links...............................................................................................................29
Hard Links.....................................................................................................................30
Further Reading.............................................................................................................30
5 – Manipulating Files And Directories........................................................31
Wildcards.......................................................................................................................31
Character Ranges................................................................................................33
Wildcards Work In The GUI Too..........................................................................33
mkdir – Create Directories.............................................................................................34
cp – Copy Files And Directories....................................................................................34
Useful Options And Examples..................................................................................35
mv – Move And Rename Files......................................................................................36
Useful Options And Examples..................................................................................36
rm – Remove Files And Directories...............................................................................37
Useful Options And Examples..................................................................................37
Be Careful With rm!.............................................................................................38
ln – Create Links............................................................................................................39
Hard Links................................................................................................................39
Symbolic Links..........................................................................................................40
Let's Build A Playground................................................................................................40
Creating Directories..................................................................................................40
Copying Files............................................................................................................41
Moving And Renaming Files.....................................................................................42
Creating Hard Links..................................................................................................43
Creating Symbolic Links...........................................................................................44
Removing Files And Directories...............................................................................45
Creating Symlinks With The GUI.........................................................................47
Summing Up.............................................................................................................47
6 – Working With Commands........................................................................48
What Exactly Are Commands?......................................................................................48
Identifying Commands...................................................................................................49
type – Display A Command's Type...........................................................................49
which – Display An Executable's Location...............................................................49
Getting A Command's Documentation..........................................................................50
help – Get Help For Shell Builtins............................................................................50
--help – Display Usage Information..........................................................................51
man – Display A Program's Manual Page................................................................51
apropos – Display Appropriate Commands..............................................................53
whatis – Display A Very Brief Description Of A Command.......................................53
The Most Brutal Man Page Of Them All..............................................................53
info – Display A Program's Info Entry.......................................................................54
README And Other Program Documentation Files................................................55
Creating Your Own Commands With alias....................................................................56
Revisiting Old Friends...................................................................................................58
Further Reading.............................................................................................................58
7 – Redirection................................................................................................59
Standard Input, Output, And Error.................................................................................59
Redirecting Standard Output.........................................................................................60
Redirecting Standard Error............................................................................................61
Redirecting Standard Output And Standard Error To One File................................62
Disposing Of Unwanted Output................................................................................63
/dev/null In Unix Culture......................................................................................63
Redirecting Standard Input............................................................................................63
cat – Concatenate Files............................................................................................63
Pipelines........................................................................................................................65
Filters........................................................................................................................66
uniq - Report Or Omit Repeated Lines....................................................................66
wc – Print Line, Word, And Byte Counts..................................................................67
grep – Print Lines Matching A Pattern......................................................................67
head / tail – Print First / Last Part Of Files................................................................68
tee – Read From Stdin And Output To Stdout And Files..........................................69
Summing Up..................................................................................................................70
Linux Is About Imagination..................................................................................70
8 – Seeing The World As The Shell Sees It..................................................72
Expansion......................................................................................................................72
Pathname Expansion...............................................................................................73
Pathname Expansion Of Hidden Files.................................................................74
Tilde Expansion........................................................................................................74
Arithmetic Expansion................................................................................................75
Brace Expansion......................................................................................................76
Parameter Expansion...............................................................................................77
Command Substitution.............................................................................................78
Quoting..........................................................................................................................79
Double Quotes..........................................................................................................79
Single Quotes...........................................................................................................81
Escaping Characters................................................................................................82
Backslash Escape Sequences............................................................................82
Summing Up..................................................................................................................83
Further Reading.............................................................................................................83
9 – Advanced Keyboard Tricks.....................................................................84
Command Line Editing..................................................................................................84
Cursor Movement.....................................................................................................84
Modifying Text...........................................................................................................85
Cutting And Pasting (Killing And Yanking) Text........................................................85
The Meta Key......................................................................................................86
Completion....................................................................................................................86
Programmable Completion..................................................................................88
Using History.................................................................................................................88
Searching History.....................................................................................................89
History Expansion.....................................................................................................91
script....................................................................................................................91
Summing Up..................................................................................................................92
Further Reading.............................................................................................................92
10 – Permissions............................................................................................93
Owners, Group Members, And Everybody Else............................................................94
Reading, Writing, And Executing...................................................................................95
chmod – Change file mode.......................................................................................97
What The Heck Is Octal?.....................................................................................98
Setting File Mode With The GUI.............................................................................100
umask – Set Default Permissions..........................................................................101
Some Special Permissions................................................................................103
Changing Identities......................................................................................................104
su – Run A Shell With Substitute User And Group IDs..........................................105
sudo – Execute A Command As Another User.......................................................106
Ubuntu And sudo...............................................................................................107
chown – Change File Owner And Group................................................................107
chgrp – Change Group Ownership.........................................................................109
Exercising Our Privileges............................................................................................109
Changing Your Password.............................................................................................111
Further Reading...........................................................................................................112
11 – Processes..............................................................................................113
How A Process Works.................................................................................................113
Viewing Processes......................................................................................................114
Viewing Processes Dynamically With top...............................................................116
Controlling Processes..................................................................................................118
Interrupting A Process.............................................................................................119
Putting A Process In The Background....................................................................119
Returning A Process To The Foreground...............................................................120
Stopping (Pausing) A Process................................................................................121
Signals.........................................................................................................................122
Sending Signals To Processes With kill.................................................................122
Sending Signals To Multiple Processes With killall................................................125
More Process Related Commands.............................................................................125
Part 3 – Configuration And The Environment.............................127
12 – The Environment..................................................................................128
What Is Stored In The Environment?..........................................................................128
Examining The Environment..................................................................................128
Some Interesting Variables.....................................................................................130
How Is The Environment Established?.......................................................................131
What's In A Startup File?........................................................................................132
Modifying The Environment.........................................................................................134
Which Files Should We Modify?.............................................................................134
Text Editors.............................................................................................................134
Using A Text Editor.................................................................................................135
Why Comments Are Important..........................................................................138
Activating Our Changes..........................................................................................139
Summing Up................................................................................................................139
Further Reading..........................................................................................................139
13 – A Gentle Introduction To vi.................................................................140
Why We Should Learn vi.............................................................................................140
A Little Background ....................................................................................................141
Starting And Stopping vi..............................................................................................141
Compatibility Mode............................................................................................142
Editing Modes..............................................................................................................143
Entering Insert Mode..............................................................................................144
Saving Our Work....................................................................................................144
Moving The Cursor Around.........................................................................................145
Basic Editing................................................................................................................146
Appending Text.......................................................................................................146
Opening A Line.......................................................................................................147
Deleting Text...........................................................................................................148
Cutting, Copying And Pasting Text.........................................................................149
Joining Lines...........................................................................................................151
Search And Replace....................................................................................................151
Searching Within A Line..........................................................................................151
Searching The Entire File.......................................................................................151
Global Search And Replace...................................................................................152
Editing Multiple Files...................................................................................................154
Switching Between Files.........................................................................................155
Opening Additional Files For Editing......................................................................155
Copying Content From One File Into Another........................................................156
Inserting An Entire File Into Another.......................................................................157
Saving Our Work.........................................................................................................158
Further Reading..........................................................................................................159
14 – Customizing The Prompt.....................................................................160
Anatomy Of A Prompt..................................................................................................160
Trying Some Alternate Prompt Designs......................................................................162
Adding Color................................................................................................................163
Terminal Confusion............................................................................................163
Moving The Cursor......................................................................................................166
Saving The Prompt......................................................................................................167
Summing Up................................................................................................................167
Further Reading..........................................................................................................168
Part 4 – Common Tasks And Essential Tools.............................169
15 – Package Management..........................................................................170
Packaging Systems.....................................................................................................170
How A Package System Works...................................................................................171
Package Files.........................................................................................................171
Repositories............................................................................................................171
Dependencies.........................................................................................................172
High And Low-level Package Tools........................................................................172
Common Package Management Tasks.......................................................................173
Finding A Package In A Repository........................................................................173
Installing A Package From A Repository.................................................................173
Installing A Package From A Package File.............................................................174
Removing A Package.............................................................................................174
Updating Packages From A Repository..................................................................175
Upgrading A Package From A Package File...........................................................175
Listing Installed Packages......................................................................................176
Determining If A Package Is Installed.....................................................................176
Displaying Info About An Installed Package...........................................................177
Finding Which Package Installed A File.................................................................177
Summing Up................................................................................................................177
The Linux Software Installation Myth.................................................................178
Further Reading..........................................................................................................179
16 – Storage Media.......................................................................................180
Mounting And Unmounting Storage Devices..............................................................180
Viewing A List Of Mounted File Systems................................................................182
Why Unmounting Is Important...........................................................................185
Determining Device Names....................................................................................186
Creating New File Systems.........................................................................................189
Manipulating Partitions With fdisk..........................................................................189
Creating A New File System With mkfs..................................................................192
Testing And Repairing File Systems............................................................................193
What The fsck?..................................................................................................193
Formatting Floppy Disks..............................................................................................193
Moving Data Directly To/From Devices.......................................................................194
Creating CD-ROM Images..........................................................................................195
Creating An Image Copy Of A CD-ROM.................................................................195
Creating An Image From A Collection Of Files.......................................................195
A Program By Any Other Name.........................................................................196
Writing CD-ROM Images.............................................................................................196
Mounting An ISO Image Directly............................................................................196
Blanking A Re-Writable CD-ROM...........................................................................197
Writing An Image....................................................................................................197
Further Reading..........................................................................................................197
Extra Credit..................................................................................................................197
17 – Networking............................................................................................199
Examining And Monitoring A Network.........................................................................200
ping.........................................................................................................................200
traceroute...............................................................................................................201
netstat.....................................................................................................................202
Transporting Files Over A Network..............................................................................203
ftp............................................................................................................................204
lftp – A Better ftp.....................................................................................................206
wget........................................................................................................................206
Secure Communication With Remote Hosts...............................................................206
ssh..........................................................................................................................207
Tunneling With SSH..........................................................................................210
scp And sftp............................................................................................................211
An SSH Client For Windows?............................................................................212
Further Reading..........................................................................................................212
18 – Searching For Files..............................................................................213
locate – Find Files The Easy Way...............................................................................213
Where Does The locate Database Come From?..............................................215
find – Find Files The Hard Way...................................................................................215
Tests.......................................................................................................................216
Operators................................................................................................................218
Predefined Actions..................................................................................................221
User Defined Actions..............................................................................................223
Improving Efficiency...............................................................................................224
xargs.......................................................................................................................224
Dealing With Funny Filenames..........................................................................225
A Return To The Playground..................................................................................226
Options...................................................................................................................228
Further Reading..........................................................................................................229
19 – Archiving And Backup.........................................................................230
Compressing Files.......................................................................................................230
gzip.........................................................................................................................231
bzip2.......................................................................................................................233
Don’t Be Compressive Compulsive...................................................................234
Archiving Files.............................................................................................................234
tar............................................................................................................................234
zip...........................................................................................................................240
Synchronizing Files And Directories............................................................................242
Using rsync Over A Network...................................................................................245
Further Reading..........................................................................................................246
20 – Regular Expressions...........................................................................247
What Are Regular Expressions?............................................................................247
grep.............................................................................................................................247
Metacharacters And Literals........................................................................................249
The Any Character......................................................................................................250
Anchors.......................................................................................................................251
A Crossword Puzzle Helper...............................................................................251
Bracket Expressions And Character Classes..............................................................252
Negation.................................................................................................................252
Traditional Character Ranges.................................................................................253
POSIX Character Classes......................................................................................254
Reverting To Traditional Collation Order............................................................257
POSIX Basic Vs. Extended Regular Expressions.......................................................258
POSIX................................................................................................................258
Alternation...................................................................................................................259
Quantifiers...................................................................................................................260
? - Match An Element Zero Or One Time...............................................................260
* - Match An Element Zero Or More Times............................................................261
+ - Match An Element One Or More Times............................................................262
{ } - Match An Element A Specific Number Of Times..............................................262
Putting Regular Expressions To Work.........................................................................263
Validating A Phone List With grep...........................................................................263
Finding Ugly Filenames With find...........................................................................264
Searching For Files With locate.............................................................................265
Searching For Text In less And vim........................................................................265
Summing Up................................................................................................................267
Further Reading..........................................................................................................267
21 – Text Processing....................................................................................268
Applications Of Text.....................................................................................................268
Documents.............................................................................................................269
Web Pages.............................................................................................................269
Email.......................................................................................................................269
Printer Output.........................................................................................................269
Program Source Code............................................................................................269
Revisiting Some Old Friends.......................................................................................269
cat...........................................................................................................................270
MS-DOS Text Vs. Unix Text...............................................................................271
sort..........................................................................................................................271
uniq.........................................................................................................................279
Slicing And Dicing........................................................................................................280
cut...........................................................................................................................280
Expanding Tabs.................................................................................................283
paste.......................................................................................................................284
join..........................................................................................................................285
Comparing Text...........................................................................................................287
comm......................................................................................................................288
diff...........................................................................................................................288
patch.......................................................................................................................291
Editing On The Fly.......................................................................................................292
tr..............................................................................................................................292
ROT13: The Not-So-Secret Decoder Ring........................................................294
sed..........................................................................................................................295
People Who Like sed Also Like.........................................................................303
aspell......................................................................................................................303
Summing Up................................................................................................................307
Further Reading..........................................................................................................307
Extra Credit..................................................................................................................308
22 – Formatting Output................................................................................309
Simple Formatting Tools..............................................................................................309
nl – Number Lines..................................................................................................309
fold – Wrap Each Line To A Specified Length........................................................313
fmt – A Simple Text Formatter................................................................................313
pr – Format Text For Printing..................................................................................317
printf – Format And Print Data................................................................................318
Document Formatting Systems...................................................................................321
groff.........................................................................................................................322
Summing Up................................................................................................................328
Further Reading..........................................................................................................328
23 – Printing..................................................................................................330
A Brief History Of Printing............................................................................................330
Printing In The Dim Times......................................................................................330
Character-based Printers.......................................................................................331
Graphical Printers...................................................................................................332
Printing With Linux......................................................................................................333
Preparing Files For Printing.........................................................................................333
pr – Convert Text Files For Printing........................................................................333
Sending A Print Job To A Printer..................................................................................335
lpr – Print Files (Berkeley Style).............................................................................335
lp – Print Files (System V Style).............................................................................336
Another Option: a2ps..............................................................................................337
Monitoring And Controlling Print Jobs.........................................................................340
lpstat – Display Print System Status......................................................................340
lpq – Display Printer Queue Status........................................................................341
lprm / cancel – Cancel Print Jobs..........................................................................342
Summing Up................................................................................................................342
Further Reading..........................................................................................................342
24 – Compiling Programs............................................................................344
What Is Compiling?.....................................................................................................344
Are All Programs Compiled?..................................................................................345
Compiling A C Program...............................................................................................346
Obtaining The Source Code...................................................................................346
Examining The Source Tree...................................................................................348
Building The Program.............................................................................................350
Installing The Program...........................................................................................354
Summing Up................................................................................................................354
Further Reading..........................................................................................................355
Part 5 – Writing Shell Scripts.......................................................357
25 – Writing Your First Script......................................................................358
What Are Shell Scripts?...............................................................................................358
How To Write A Shell Script.........................................................................................358
Script File Format........................................................................................................359
Executable Permissions..............................................................................................360
Script File Location......................................................................................................360
Good Locations For Scripts....................................................................................362
More Formatting Tricks................................................................................................362
Long Option Names................................................................................................362
Indentation And Line Continuation.........................................................................362
Configuring vim For Script Writing.....................................................................363
Summing Up................................................................................................................364
Further Reading..........................................................................................................364
26 – Starting A Project.................................................................................365
First Stage: Minimal Document...................................................................................365
Second Stage: Adding A Little Data............................................................................367
Variables And Constants.............................................................................................368
Assigning Values To Variables And Constants.......................................................371
Here Documents.........................................................................................................372
Summing Up................................................................................................................375
Further Reading..........................................................................................................375
27 – Top-Down Design.................................................................................376
Shell Functions............................................................................................................377
Local Variables............................................................................................................380
Keep Scripts Running..................................................................................................381
Shell Functions In Your .bashrc File..................................................................384
Summing Up................................................................................................................384
Further Reading..........................................................................................................384
28 – Flow Control: Branching With if.........................................................385
if...................................................................................................................................385
Exit Status...................................................................................................................386
test...............................................................................................................................388
File Expressions.....................................................................................................388
String Expressions..................................................................................................391
Integer Expressions................................................................................................392
A More Modern Version Of test...................................................................................393
(( )) - Designed For Integers........................................................................................395
Combining Expressions...............................................................................................396
Portability Is The Hobgoblin Of Little Minds.......................................................398
Control Operators: Another Way To Branch................................................................399
Summing Up................................................................................................................399
Further Reading..........................................................................................................400
29 – Reading Keyboard Input......................................................................401
read – Read Values From Standard Input...................................................................402
Options...................................................................................................................404
IFS..........................................................................................................................406
You Can’t Pipe read...........................................................................................407
Validating Input............................................................................................................408
Menus..........................................................................................................................409
Summing Up................................................................................................................411
Extra Credit.............................................................................................................411
Further Reading...........................................................................................................411
30 – Flow Control: Looping With while / until...........................................412
Looping........................................................................................................................412
while........................................................................................................................412
Breaking Out Of A Loop...............................................................................................415
until.........................................................................................................................416
Reading Files With Loops...........................................................................................417
Summing Up................................................................................................................418
Further Reading..........................................................................................................418
31 – Troubleshooting...................................................................................419
Syntactic Errors...........................................................................................................419
Missing Quotes.......................................................................................................420
Missing Or Unexpected Tokens..............................................................................420
Unanticipated Expansions......................................................................................421
Logical Errors .............................................................................................................423
Defensive Programming.........................................................................................423
Verifying Input.........................................................................................................425
Design Is A Function Of Time............................................................................425
Testing.........................................................................................................................425
Test Cases..............................................................................................................426
Debugging...................................................................................................................427
Finding The Problem Area......................................................................................427
Tracing....................................................................................................................427
Examining Values During Execution......................................................................430
Summing Up................................................................................................................430
Further Reading..........................................................................................................431
32 – Flow Control: Branching With case...................................................432
case.............................................................................................................................432
Patterns..................................................................................................................434
Summing Up................................................................................................................436
Further Reading..........................................................................................................436
33 – Positional Parameters.........................................................................437
Accessing The Command Line...................................................................................437
Determining The Number of Arguments.................................................................438
shift – Getting Access To Many Arguments............................................................439
Simple Applications................................................................................................440
Using Positional Parameters With Shell Functions................................................441
Handling Positional Parameters En Masse.................................................................442
A More Complete Application......................................................................................444
Summing Up................................................................................................................447
Further Reading..........................................................................................................450
34 – Flow Control: Looping With for..........................................................451
for: Traditional Shell Form...........................................................................................451
Why i?................................................................................................................453
for: C Language Form.................................................................................................454
Summing Up................................................................................................................455
Further Reading..........................................................................................................456
35 – Strings And Numbers..........................................................................457
Parameter Expansion..................................................................................................457
Basic Parameters...................................................................................................457
Expansions To Manage Empty Variables...............................................................458
Expansions That Return Variable Names..............................................................460
String Operations....................................................................................................460
Arithmetic Evaluation And Expansion.........................................................................463
Number Bases........................................................................................................464
Unary Operators.....................................................................................................464
Simple Arithmetic....................................................................................................464
Assignment.............................................................................................................466
Bit Operations.........................................................................................................468
Logic.......................................................................................................................469
bc – An Arbitrary Precision Calculator Language........................................................472
Using bc..................................................................................................................473
An Example Script..................................................................................................473
Summing Up................................................................................................................475
Extra Credit..................................................................................................................475
Further Reading..........................................................................................................475
36 – Arrays....................................................................................................476
What Are Arrays?........................................................................................................476
Creating An Array........................................................................................................476
Assigning Values To An Array......................................................................................477
Accessing Array Elements...........................................................................................478
Array Operations.........................................................................................................480
Outputting The Entire Contents Of An Array..........................................................480
Determining The Number Of Array Elements.........................................................480
Finding The Subscripts Used By An Array.............................................................481
Adding Elements To The End Of An Array.............................................................481
Sorting An Array......................................................................................................482
Deleting An Array....................................................................................................482
Summing Up................................................................................................................483
Further Reading..........................................................................................................484
37 – Exotica...................................................................................................485
Group Commands And Subshells...............................................................................485
Process Substitution...............................................................................................486
Traps............................................................................................................................488
Temporary Files.................................................................................................491
Asynchronous Execution.............................................................................................492
wait.........................................................................................................................492
Named Pipes...............................................................................................................493
Setting Up A Named Pipe.......................................................................................494
Using Named Pipes................................................................................................494
Summing Up................................................................................................................495
Further Reading..........................................................................................................495
· · · · · · (
收起)