第1章 初識(shí)Linux she
1.1 什么是Linux2
1.1.1深入探究Linux 內(nèi)核3
1.1.2GNU 工具6
1.1.3Linux 桌面環(huán)境8
1.2 Linux 發(fā)行版12
1.2.1核心Linux 發(fā)行版13
1.2.2特定用途的Linux 發(fā)行版13
1.2.3Linux LiveCD14
1.3 小結(jié)15
第2章 走進(jìn)shell
2.1 進(jìn)入命令行16
2.1.1控制臺(tái)終端17
2.1.2圖形化終端17
2.2 通過(guò)Linux 控制臺(tái)終端訪問(wèn)CLI18
2.3 通過(guò)圖形化終端仿真訪問(wèn)CLI20
2.4 使用GNOME Terminal 仿真器21
2.4.1訪問(wèn)GNOME Terminal21
2.4.2菜單欄22
2.5 使用Konsole Terminal 仿真器25
2.5.1訪問(wèn)Konsole Terminal25
2.5.2菜單欄26
2.6 使用xterm 終端仿真器29
2.6.1訪問(wèn)xterm30
2.6.2命令行參數(shù)30
2.7 小結(jié)32
第3章 基本的bash shell 命令
3.1 啟動(dòng)shell33
3.2 shell 提示符34
3.3 bash 手冊(cè)34
3.4 瀏覽文件系統(tǒng)37
3.4.1Linux 文件系統(tǒng)37
3.4.2遍歷目錄40
3.5 文件和目錄列表42
3.5.1基本列表功能42
3.5.2顯示長(zhǎng)列表44
3.5.3過(guò)濾輸出列表45
3.6 處理文件46
3.6.1創(chuàng)建文件47
3.6.2復(fù)制文件47
3.6.3制表鍵自動(dòng)補(bǔ)全50
3.6.4鏈接文件50
3.6.5重命名文件52
3.6.6刪除文件54
3.7 處理目錄55
3.7.1創(chuàng)建目錄55
3.7.2刪除目錄55
3.8 查看文件內(nèi)容58
3.8.1查看文件類型58
3.8.2查看整個(gè)文件59
3.8.3查看部分文件61
3.9 小結(jié)63
第4章 更多的bash shell 命令
4.1 監(jiān)測(cè)程序64
4.1.1探查進(jìn)程64
4.1.2實(shí)時(shí)監(jiān)測(cè)進(jìn)程70
4.1.3結(jié)束進(jìn)程72
4.2 監(jiān)測(cè)磁盤空間73
4.2.1掛載存儲(chǔ)媒體73
4.2.2使用df 命令76
4.2.3使用du 命令77
4.3 處理數(shù)據(jù)文件78
4.3.1排序數(shù)據(jù)78
4.3.2搜索數(shù)據(jù)81
4.3.3壓縮數(shù)據(jù)83
4.3.4歸檔數(shù)據(jù)84
4.4 小結(jié)85
第5章 理解shell
5.1 shell 的類型86
5.2 shell 的父子關(guān)系88
5.2.1進(jìn)程列表91
5.2.2別出心裁的子shell 用法93
5.3 理解shell 的內(nèi)建命令96
5.3.1外部命令96
5.3.2內(nèi)建命令97
5.4 小結(jié)101
第6章 使用Linux 環(huán)境變量
6.1 什么是環(huán)境變量103
6.1.1全局環(huán)境變量104
6.1.2局部環(huán)境變量105
6.2 設(shè)置用戶定義變量106
6.2.1設(shè)置局部用戶定義變量106
6.2.2設(shè)置全局環(huán)境變量107
6.3 刪除環(huán)境變量109
6.4 默認(rèn)的shell 環(huán)境變量110
6.5 設(shè)置PATH 環(huán)境變量113
6.6 定位系統(tǒng)環(huán)境變量114
6.6.1登錄shell115
6.6.2交互式shell 進(jìn)程119
6.6.3非交互式shell120
6.6.4環(huán)境變量持久化121
6.7 數(shù)組變量121
6.8 小結(jié)122
第7章 理解Linux 文件權(quán)限
7.1 Linux 的安全性124
7.1.1/etc/passwd 文件124
7.1.2/etc/shadow 文件126
7.1.3添加新用戶127
7.1.4刪除用戶129
7.1.5修改用戶130
7.2 使用Linux 組132
7.2.1/etc/group 文件133
7.2.2創(chuàng)建新組133
7.2.3修改組134
7.3 理解文件權(quán)限135
7.3.1使用文件權(quán)限符135
7.3.2默認(rèn)文件權(quán)限136
7.4 改變安全性設(shè)置138
7.4.1改變權(quán)限138
7.4.2改變所屬關(guān)系139
7.5 共享文件140
7.6 小結(jié)142
第8章 管理文件系統(tǒng)
8.1 探索Linux 文件系統(tǒng)143
8.1.1基本的Linux 文件系統(tǒng)143
8.1.2日志文件系統(tǒng)145
8.1.3寫時(shí)復(fù)制文件系統(tǒng)147
8.2 操作文件系統(tǒng)147
8.2.1創(chuàng)建分區(qū)147
8.2.2創(chuàng)建文件系統(tǒng)151
8.2.3文件系統(tǒng)的檢查與修復(fù)153
8.3 邏輯卷管理154
8.3.1邏輯卷管理布局154
8.3.2Linux 中的LVM155
8.3.3使用Linux LVM156
8.4 小結(jié)162
第9章 安裝軟件程序
9.1 包管理基礎(chǔ)163
9.2 基于Debian 的系統(tǒng)164
9.2.1用aptitude 管理軟件包164
9.2.2用aptitude 安裝軟件包166
9.2.3用aptitude 更新軟件168
9.2.4用aptitude 卸載軟件169
9.2.5aptitude 倉(cāng)庫(kù)169
9.3 基于Red Hat 的系統(tǒng)171
9.3.1列出已安裝包171
9.3.2用yum 安裝軟件173
9.3.3用yum 更新軟件174
9.3.4用yum 卸載軟件174
9.3.5處理?yè)p壞的包依賴關(guān)系175
9.3.6yum 軟件倉(cāng)庫(kù)176
9.4 從源碼安裝177
9.5 小結(jié)180
10.1.1檢查vim 軟件包181
10.1.2vim 基礎(chǔ)183
10.1.4復(fù)制和粘貼185
10.1.5查找和替換186
10.3.1檢查emacs 軟件包189
10.3.2在控制臺(tái)中使用emacs190
10.3.3在GUI 環(huán)境中使用emacs195
10.5.1啟動(dòng)gedit203
10.5.2基本的gedit 功能203
10.5.3設(shè)定偏好設(shè)置204
10.6 小結(jié)206
第二部分shell 腳本編程基礎(chǔ)
第11章 構(gòu)建基本腳本
11.1 使用多個(gè)命令210
11.2 創(chuàng)建shell 腳本文件211
11.3 顯示消息212
11.4 使用變量214
11.4.1環(huán)境變量214
11.4.2用戶變量215
11.4.3命令替換216
11.5 重定向輸入和輸出218
11.5.1輸出重定向218
11.5.2輸入重定向219
11.6 管道220
11.7 執(zhí)行數(shù)學(xué)運(yùn)算222
11.7.1expr 命令223
11.7.2使用方括號(hào)224
11.7.3浮點(diǎn)解決方案225
11.8 退出腳本228
11.8.1查看退出狀態(tài)碼228
11.8.2exit 命令229
11.9 小結(jié)231
第12章 使用結(jié)構(gòu)化命令
12.1 使用if-then 語(yǔ)句232
12.2 if-then-else 語(yǔ)句235
12.3 嵌套if235
12.4 test 命令238
12.4.1數(shù)值比較240
12.4.2字符串比較242
12.4.3文件比較246
12.5 復(fù)合條件測(cè)試254
12.6 if-then 的高級(jí)特性255
12.6.1使用雙括號(hào)255
12.6.2使用雙方括號(hào)256
12.7 case 命令257
12.8 小結(jié)258
第13章 更多的結(jié)構(gòu)化命令
13.1 for 命令260
13.1.1讀取列表中的值261
13.1.2讀取列表中的復(fù)雜值262
13.1.3從變量讀取列表263
13.1.4從命令讀取值264
13.1.5更改字段分隔符265
13.1.6用通配符讀取目錄266
13.2 C 語(yǔ)言風(fēng)格的for 命令268
13.2.1C 語(yǔ)言的for 命令268
13.2.2使用多個(gè)變量269
13.3 while 命令270
13.3.1while 的基本格式270
13.3.2使用多個(gè)測(cè)試命令271
13.4 until 命令272
13.5 嵌套循環(huán)274
13.6 循環(huán)處理文件數(shù)據(jù)276
13.7 控制循環(huán)277
13.7.1break 命令277
13.7.2continue 命令280
13.8 處理循環(huán)的輸出282
13.9 實(shí)例283
13.9.1查找可執(zhí)行文件284
13.9.2創(chuàng)建多個(gè)用戶賬戶285
13.10 小結(jié)286
第14章 處理用戶輸入
14.1 命令行參數(shù)287
14.1.1讀取參數(shù)287
14.1.2讀取腳本名289
14.1.3測(cè)試參數(shù)291
14.2 特殊參數(shù)變量292
14.2.1參數(shù)統(tǒng)計(jì)292
14.2.2抓取所有的數(shù)據(jù)294
14.3 移動(dòng)變量295
14.4 處理選項(xiàng)296
14.4.1查找選項(xiàng)297
14.4.2使用getopt 命令300
14.4.3使用更高級(jí)的getopts302
14.5 將選項(xiàng)標(biāo)準(zhǔn)化305
14.6 獲得用戶輸入306
14.6.1基本的讀取306
14.6.2超時(shí)307
14.6.3隱藏方式讀取308
14.6.4從文件中讀取309
14.7 小結(jié)309
第15章 呈現(xiàn)數(shù)據(jù)
15.1 理解輸入和輸出311
15.1.1標(biāo)準(zhǔn)文件描述符311
15.1.2重定向錯(cuò)誤313
15.2 在腳本中重定向輸出315
15.2.1臨時(shí)重定向315
15.2.2永久重定向316
15.3 在腳本中重定向輸入317
15.4 創(chuàng)建自己的重定向317
15.4.1創(chuàng)建輸出文件描述符318
15.4.2重定向文件描述符318
15.4.3創(chuàng)建輸入文件描述符319
15.4.4創(chuàng)建讀寫文件描述符320
15.4.5關(guān)閉文件描述符321
15.5 列出打開(kāi)的文件描述符322
15.6 阻止命令輸出323
15.7 創(chuàng)建臨時(shí)文件324
15.7.1創(chuàng)建本地臨時(shí)文件324
15.7.2在/tmp 目錄創(chuàng)建臨時(shí)文件325
15.7.3創(chuàng)建臨時(shí)目錄326
15.8 記錄消息327
15.9 實(shí)例328
15.10 小結(jié)330
第16章 控制腳本
16.1 處理信號(hào)331
16.1.1重溫Linux 信號(hào)331
16.1.2生成信號(hào)332
16.1.3捕獲信號(hào)334
16.1.4捕獲腳本退出335
16.1.5修改或移除捕獲335
16.2 以后臺(tái)模式運(yùn)行腳本338
16.2.1后臺(tái)運(yùn)行腳本338
16.2.2運(yùn)行多個(gè)后臺(tái)作業(yè)340
16.3 在非控制臺(tái)下運(yùn)行腳本341
16.4 作業(yè)控制342
16.4.1查看作業(yè)342
16.4.2重啟停止的作業(yè)344
16.5 調(diào)整謙讓度345
16.5.1nice 命令345
16.5.2renice 命令346
16.6 定時(shí)運(yùn)行作業(yè)346
16.6.1用at 命令來(lái)計(jì)劃執(zhí)行作業(yè)347
16.6.2安排需要定期執(zhí)行的腳本349
16.6.3使用新shell 啟動(dòng)腳本352
16.7 小結(jié)353
第三部分高級(jí)shell 腳本編程
第17章 創(chuàng)建函數(shù)
17.1 基本的腳本函數(shù)356
17.1.1創(chuàng)建函數(shù)357
17.1.2使用函數(shù)357
17.2 返回值359
17.2.1默認(rèn)退出狀態(tài)碼359
17.2.2使用return 命令360
17.2.3使用函數(shù)輸出361
17.3 在函數(shù)中使用變量362
17.3.1向函數(shù)傳遞參數(shù)362
17.3.2在函數(shù)中處理變量364
17.4 數(shù)組變量和函數(shù)366
17.4.1向函數(shù)傳數(shù)組參數(shù)366
17.4.2從函數(shù)返回?cái)?shù)組368
17.5 函數(shù)遞歸369
17.6 創(chuàng)建庫(kù)370
17.7 在命令行上使用函數(shù)371
17.7.1在命令行上創(chuàng)建函數(shù)372
17.7.2在.bashrc 文件中定義函數(shù)372
17.8 實(shí)例374
17.8.1下載及安裝374
17.8.2構(gòu)建庫(kù)374
17.8.3shtool 庫(kù)函數(shù)376
17.8.4使用庫(kù)376
17.9 小結(jié)377
第18章 圖形化桌面環(huán)境中的腳本編程
18.1 創(chuàng)建文本菜單378
18.1.1創(chuàng)建菜單布局379
18.1.2創(chuàng)建菜單函數(shù)380
18.1.3添加菜單邏輯380
18.1.4整合shell 腳本菜單381
18.1.5使用select 命令382
18.2 制作窗口384
18.2.1dialog 包384
18.2.2dialog 選項(xiàng)389
18.2.3在腳本中使用dialog 命令391
18.3 使用圖形393
18.3.1KDE 環(huán)境393
18.3.2GNOME 環(huán)境396
18.4 小結(jié)400
第19章 初識(shí)sed 和gawk
19.1 文本處理401
19.1.2gawk 程序404
19.2.1更多的替換選項(xiàng)410
19.2.2使用地址411
19.2.3刪除行414
19.2.4插入和附加文本415
19.2.5修改行417
19.2.6轉(zhuǎn)換命令418
19.2.7回顧打印419
19.2.8使用sed 處理文件421
19.3 小結(jié)423
第20章 正則表達(dá)式
20.1 什么是正則表達(dá)式424
20.1.1定義424
20.1.2正則表達(dá)式的類型425
20.2 定義BRE 模式426
20.2.1純文本426
20.2.2特殊字符427
20.2.3錨字符428
20.2.4點(diǎn)號(hào)字符430
20.2.5字符組430
20.2.6排除型字符組432
20.2.7區(qū)間433
20.2.8特殊的字符組434
20.2.9星號(hào)434
20.3 擴(kuò)展正則表達(dá)式436
20.3.1問(wèn)號(hào)436
20.3.2加號(hào)437
20.3.3使用花括號(hào)437
20.3.4管道符號(hào)438
20.3.5表達(dá)式分組439
20.4 正則表達(dá)式實(shí)戰(zhàn)439
20.4.1目錄文件計(jì)數(shù)440
20.4.2驗(yàn)證電話號(hào)碼441
20.4.3解析郵件地址443
20.5 小結(jié)444
第21章 sed 進(jìn)階
21.1 多行命令445
21.1.1next 命令446
21.1.2多行刪除命令449
21.1.3多行打印命令449
21.2 保持空間450
21.3 排除命令451
21.4 改變流454
21.4.1分支454
21.4.2測(cè)試455
21.5 模式替代456
21.5.1&符號(hào)457
21.5.2替代單獨(dú)的單詞457
21.6 在腳本中使用sed458
21.6.1使用包裝腳本458
21.6.2重定向sed 的輸出459
21.7 創(chuàng)建sed 實(shí)用工具460
21.7.1加倍行間距460
21.7.2對(duì)可能含有空白行的文件加倍行間距460
21.7.3給文件中的行編號(hào)461
21.7.4打印末尾行462
21.7.5刪除行463
21.7.6刪除HTML 標(biāo)簽466
21.8 小結(jié)467
第22章 gawk 進(jìn)階
22.1 使用變量469
22.1.1內(nèi)建變量469
22.1.2自定義變量474
22.2 處理數(shù)組476
22.2.1定義數(shù)組變量476
22.2.2遍歷數(shù)組變量477
22.2.3刪除數(shù)組變量478
22.3 使用模式478
22.3.1正則表達(dá)式478
22.3.2匹配操作符479
22.3.3數(shù)學(xué)表達(dá)式480
22.4 結(jié)構(gòu)化命令480
22.4.1if 語(yǔ)句480
22.4.2while 語(yǔ)句482
22.4.3do-while 語(yǔ)句483
22.4.4for 語(yǔ)句484
22.5 格式化打印484
22.6 內(nèi)建函數(shù)487
22.6.1數(shù)學(xué)函數(shù)487
22.6.2字符串函數(shù)488
22.6.3時(shí)間函數(shù)490
22.7 自定義函數(shù)490
22.7.1定義函數(shù)490
22.7.2使用自定義函數(shù)491
22.7.3創(chuàng)建函數(shù)庫(kù)491
22.8 實(shí)例492
22.9 小結(jié)493
第23章 使用其他shell
23.1 什么是dash shell495
23.2 dash shell 的特性496
23.2.1dash 命令行參數(shù)496
23.2.2dash 環(huán)境變量497
23.2.3dash 內(nèi)建命令499
23.3 dash 腳本編程500
23.3.1創(chuàng)建dash 腳本500
23.3.2不能使用的功能500
23.4 zsh shell502
23.5 zsh shell 的組成503
23.5.1shell 選項(xiàng)503
23.5.2內(nèi)建命令504
23.6 zsh 腳本編程508
23.6.1數(shù)學(xué)運(yùn)算508
23.6.2結(jié)構(gòu)化命令509
23.6.3函數(shù)510
23.7 小結(jié)510
第四部分創(chuàng)建實(shí)用的腳本
第24章 編寫簡(jiǎn)單的腳本實(shí)用工具
24.1 歸檔514
24.2 管理用戶賬戶523
24.2.1需要的功能523
24.2.2創(chuàng)建腳本530
24.2.3運(yùn)行腳本535
24.3 監(jiān)測(cè)磁盤空間537
24.3.1需要的功能537
24.3.2創(chuàng)建腳本540
24.3.3運(yùn)行腳本541
24.4 小結(jié)542
第25章 創(chuàng)建與數(shù)據(jù)庫(kù)、Web及電子郵件相關(guān)的腳本
25.1 MySQL 數(shù)據(jù)庫(kù)543
25.1.1使用MySQL543
25.1.2在腳本中使用數(shù)據(jù)庫(kù)552
25.2 使用Web555
25.2.1安裝Lynx556
25.2.2lynx 命令行557
25.2.3Lynx 配置文件558
25.2.4從Lynx 中獲取數(shù)據(jù)559
25.3 使用電子郵件561
25.4 小結(jié)564
第26章 一些小有意思的腳本
26.1 發(fā)送消息565
26.1.1功能分析565
26.1.2創(chuàng)建腳本568
26.2 獲取格言573
26.2.1功能分析574
26.2.2創(chuàng)建腳本577
26.3 編造借口583
26.3.1功能分析583
26.3.2創(chuàng)建腳本586
26.4 小結(jié)587
附錄Abash 命令快速指南589
附錄Bsed 和gawk 快速指南597