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