Linux Shell 腳本攻略, 3/e
內容描述
本書結合豐富的實際案例介紹瞭如何利用shell命令實現與Linux操作系統的高效溝通,具體內容包括:各類日常任務以及如何利用shell命令更快速地解決問題;編寫腳本從Web中挖掘數據並進行處理;在腳本中與簡單的Web API進行交互;任務的執行及自動化;創建及維護文件和文件夾歸檔,利用shell進行壓縮和加密。第3版講解了* 新的Linux發行版中加入的令人激動的新特性,幫助你完成從未想到過的功能。
本書適合Linux系統管理員和程序員閱讀,是編寫shell腳本的絕 佳參考資料。
目錄大綱
第1章小試牛刀1
1.1簡介1
1.2在終端中顯示輸出2
1.2.1預備知識2
1.2.2實戰演練4
1.2.3工作原理6
1.2.4補充內容6
1.3使用變量與環境變量7
1.3. 1預備知識7
1.3.2實戰演練8
1.3.3補充內容9
1.4使用函數添加環境變量11
1.4.1實戰演練11
1.4.2工作原理12
1.5使用shell進行數學運算12
1.6玩轉文件描述符與重定向14
1.6.1預備知識14
1.6.2實戰演練15
1.6.3工作原理17
1.6.4補充內容17
1.7數組與關聯數組19
1.7.1預備知識19
1.7.2實戰演練20
1.7.3補充內容20
1.8別名21
1.8.1實戰演練21
1.8.2補充內容22
1.9採集終端信息23
1.9.1預備知識23
1.9.2實戰演練23
1.10獲取並設置日期及延時24
1.10.1預備知識24
1.10.2實戰演練25
1.10.3工作原理26
1.10.4補充內容27
1.11調試腳本27
1.11.1實戰演練28
1.11.2工作原理29
1.11.3補充內容29
1.12函數和參數29
1.12.1實戰演練30
1.12.2補充內容31
1.13將一個命令的輸出發送給另一個命令33
1.13.1預備知識33
1.13.2實戰演練34
1.13.3補充內容34
1.14在不按下回車鍵的情況下讀入n個字符35
1.15持續運行命令直執行成功36
1.15.1實戰演練36
1.15.2工作原理37
1.15.3補充內容37
1.16字段分隔符與迭代器37
1.16.1預備知識38
1.16.2實戰演練38
1.17比較與測試40
1.18使用配置文件定制bash 43
第2章命令之樂46
2.1簡介46
2.2用cat進行拼接46
2.2.1實戰演練46
2.2.2補充內容47
2.3錄製並回放終端會話49
2.3.1預備知識49
2.3.2實戰演練49
2.3.3工作原理50
2.4查找並列出文件50
2.4.1預備知識50
2.4.2實戰演練50
2.4.3補充內容51
2.5玩轉xargs 58
2.5.1預備知識59
2.5.2實戰演練59
2.5.3工作原理60
2.5.4補充內容60
2.6用tr進行轉換63
2.6.1預備知識63
2.6.2實戰演練64
2.6.3工作原理64
2.6.4補充內容65
2.7校驗和與核實67
2.7.1預備知識68
2.7.2實戰演練68
2.7.3工作原理68
2.7.4補充內容69
2.8加密工具與散列71
2.9行排序72
2.9.1預備知識72
2.9.2實戰演練72
2.9.3工作原理73
2.9.4補充內容73
2.10臨時文件命名與隨機數76
2.10.1實戰演練77
2.10.2工作原理77
2.11分割文件與數據77
2.11.1工作原理78
2.11.2補充內容78
2.12根據擴展名切分文件名80
2.12.1實戰演練80
2.12.2工作原理80
2.13多個文件的重命名與移動82
2.13 .1預備知識82
2.13.2實戰演練82
2.13.3工作原理83
2.14拼寫檢查與詞典操作84
2.14.1實戰演練84
2.14.2工作原理84
2.15交互輸入自動化85
2.15.1預備知識86
2.15.2實戰演練86
2.15.3工作原理86
2.15.4補充內容87
2.16利用並行進程加速命令執行88
2.16.1實戰演練88
2.16.2工作原理89
2.16.3補充內容89
2.17檢查目錄以及其中的文件與子目錄89
2.17.1預備知識90
2.17.2實戰演練90
第3章以文件之名92
3.1簡介92
3.2生成任意大小的文件92
3.3文本文件的交集與差集94
3.3.1預備知識94
3.3.2實戰演練94
3.3.3工作原理96
3.4查找並刪除重複文件97
3.4.1預備知識97
3.4.2實戰演練97
3.4.3工作原理98
3.5文件權限、所有權與粘滯位99
3.5.1實戰演練101
3.5.2補充內容102
3.6將文件設置為不可修改104
3.6.1預備知識104
3.6.2實戰演練104
3.7批量生成空白文件105
3.7.1預備知識105
3.7.2實戰演練105
3.8查找符號鏈接及其指向目標106
3.8.1實戰演練106
3.8.2工作原理107
3.9枚舉文件類型統計信息107
3.9.1預備知識107
3.9.2實戰演練107
3.9.3工作原理108
3.10使用環回文件109
3.10.1實戰演練110
3.10.2工作原理111
3.10.3補充內容111
3.11生成ISO及混合型ISO文件113
3.11.1預備知識113
3.11.2實戰演練113
3.11.3補充內容114
3.12查找並修補文件差異115
3.12.1實戰演練115
3.12.2補充內容117
3.13使用head與tail打印文件的前10行和後10行117
3.14只列出目錄的各種方法120
3.14.1預備知識120
3.14.2實戰演練120
3.14.3工作原理120
3.15在命令行中使用pushd和popd實現快速定位121
3.15.1預備知識121
3.15.2實戰演練121
3.15.3補充內容122
3.16統計文件的行數、單詞數和字符數122
3.17打印目錄樹123
3.17.1預備知識123
3.17.2實戰演練123
3.17.3補充內容124
3.18處理視頻與圖像文件125
3.18.1預備知識125
3.18.2實戰演練126
第4章讓文本飛128
4.1簡介128
4.2使用正則表達式128
4.2.1實戰演練129
4.2.2工作原理131
4.2.3補充內容131
4.3使用grep在文件中搜索文本132
4.3.1實戰演練132
4.3.2補充內容134
4.4使用cut按列切分文件138
4.4.1實戰演練138
4.4.2補充內容139
4.5使用sed替換文本140
4.5.1實戰演練140
4.5.2補充內容141
4.6使用awk進行高級文本處理144
4.6.1預備知識144
4.6.2實戰演練144
4.6.3工作原理144
4.6.4補充內容146
4.7統計特定文件中的詞頻149
4.7.1預備知識149
4.7.2實戰演練150
4.7.3工作原理150
4.7.4參考151
4.8壓縮或解壓縮JavaScript 151
4.8.1預備知識151
4.8.2實戰演練152
4.8.3工作原理152
4.8.4參考153
4.9按列合併多個文件153
4.9.1實戰演練154
4.9.2參考154
4.10打印文件或行中的第n個單詞或列154
4.10.1實戰演練154
4.10.2參考155
4.11打印指定行或模式之間的文本155
4.11.1預備知識155
4.11.2實戰演練155
4.11.3參考156
4.12以逆序形式打印行156
4.12.1預備知識156
4.12.2實戰演練156
4.12.3工作原理157
4.13解析文本中的電子郵件地址和URL 157
4.13.1實戰演練157
4.13.2工作原理158
4.13.3參考158
4.14刪除文件中包含特定單詞的句子158
4.14.1預備知識158
4.14.2實戰演練159
4.14.3工作原理159
4.14.4參考159
4.15對目錄中的所有文件進行文本替換159
4.15.1實戰演練160
4.15.2工作原理160
4.15.3補充內容160
4.16文本切片與參數操作160
4.16.1實戰演練160
4.16.2參考161
第5章一團亂麻?沒這回事!162
5.1簡介162
5.2 Web頁面下載162
5.2.1預備知識162
5.2.2實戰演練163
5.2.3工作原理163
5.2.4補充內容164
5.3以純文本形式下載頁面165
5.3.1預備知識165
5.3.2實戰演練165
5.4 cURL入門166
5.4.1預備知識166
5.4.2實戰演練166
5.4.3工作原理167
5.4.4補充內容167
5.4.5參考169
5.5從命令行訪問未讀的Gmail郵件170
5.5.1實戰演練170
5.5.2工作原理170
5.5.3參考171
5.6解析網站數據171
5.6.1實戰演練171
5.6.2工作原理172
5.6.3參考172
5.7圖片爬取器及下載工具172
5.7.1實戰演練172
5.7.2工作原理173
5.7.3參考174
5.8網頁相冊生成器174
5.8.1預備知識175
5.8.2實戰演練175
5.8.3工作原理176
5.8.4參考176
5.9 Twitter命令行客戶端176
5.9.1預備知識177
5.9.2實戰演練177
5.9.3工作原理178
5.9.4參考179
5.10通過Web服務器查詢單詞含義179
5.10.1預備知識179
5.10.2實戰演練180
5.10.3工作原理180
5.10.4參考180
5.11查找網站中的無效鏈接181
5.11.1預備知識181
5.11.2實戰演練181
5.11.3工作原理182
5.11.4參考182
5.12跟踪網站變動182
5.12.1預備知識182
5.12.2實戰演練182
5.12.3工作原理184
5.12.4參考184
5.13發送Web頁面並讀取響應184
5.13 .1預備知識184
5.13.2實戰演練185
5.13.3參考186
5.14從Internet下載視頻186
5.14.1預備知識186
5.14.2實戰演練186
5.14.3工作原理186
5.15使用OTS匯總文本187
5.15.1預備知識187
5.15.2實戰演練187
5.15.3工作原理187
5.16在命令行中翻譯文本187
5.16.1預備知識188
5.16.2實戰演練188
5.16.3工作原理188
第6章倉儲管理189
6.1簡介189
6.2創建新的git倉庫190
6.2.1預備知識190
6.2.2實戰演練190
6.2.3工作原理190
6.3克隆遠程git倉庫191
6.4使用git添加與提交變更191
6.5使用git創建與合併分支192
6.5.1預備知識193
6.5.2實戰演練193
6.5.3工作原理193
6.5.4補充內容193
6.6分享工作成果194
6.7推送分支196
6.8檢查git倉庫狀態197
6.8.1實戰演練197
6.8.2工作原理198
6.9查看git歷史記錄198
6.10查找bug 198
6.10.1實戰演練199
6.10.2補充內容199
6.11快照標籤200
6.12提交信息規範201
6.13使用fossil 202
6.13.1預備知識202
6.13.2實戰演練202
6.14創建新的fossil倉庫202
6.14.1實戰演練203
6.14.2工作原理203
6.14.3補充內容203
6.15克隆遠程fossil倉庫204
6.15.1實戰演練204
6.15.2工作原理204
6.16打開fossil項目204
6.16.1實戰演練204
6.16.2工作原理205
6.16.3補充內容205
6.17使用fossil添加與提交變更205
6.17.1實戰演練205
6.17.2補充內容206
6.18使用fossil分支與fork 206
6.18.1實戰演練207
6.18.2工作原理207
6.18. 3補充內容208
6.19使用fossil分享工作成果208
6.19.1實戰演練208
6.19.2工作原理209
6.20更新本地fossil倉庫209
6.21檢查fossil倉庫狀態209
6.22查看fossil歷史記錄210
第7章B計劃215
7.1簡介215
7.2使用tar歸檔215
7.2.1預備知識215
7.2.2實戰演練216
7.2.3工作原理216
7.2.4補充內容216
7.2.5參考220
7.3使用cpio歸檔221
7.3.1實戰演練221
7.3.2工作原理221
7.4使用gzip壓縮數據222
7.4.1實戰演練222
7.4.2補充內容223
7.4.3參考225
7.5使用zip歸檔及壓縮225
7.5.1實戰演練225
7.5.2工作原理226
7.6更快的歸檔工具pbzip2 226
7.6.1預備知識226
7.6.2實戰演練226
7.6.3工作原理227
7.6.4補充內容227
7.7創建壓縮文件系統228
7.7.1預備知識228
7.7.2實戰演練228
7.7.3補充內容229
7.8使用rsync備份系統快照229
7.8.1實戰演練229
7.8.2工作原理230
7.8.3補充內容231
7.9差異化歸檔232
7.9.1實戰演練232
7.9.2工作原理232
7.10使用fsarchiver創建全盤鏡像233
7.10.1預備知識233
7.10.2實戰演練233
7.10.3工作原理234
第8章無網不利235
8.1簡介235
8.2網絡設置236
8.2.1預備知識236
8.2.2實戰演練236
8.2.3補充內容237
8.2.4參考241
8.3 ping! 241
8.3.1實戰演練241
8.3.2補充內容242
8.4跟踪IP路由244
8.5列出網絡中所有的活動主機245
8.5.1預備知識245
8.5.2實戰演練245
8.5.3工作原理245
8.5. 4補充內容246
8.5.5參考247
8.6使用SSH在遠程主機上執行命令247
8.6.1預備知識247
8.6.2實戰演練248
8.6.3補充內容249
8.7在遠程主機上執行圖形化命令250
8.7.1實戰演練250
8.7.2參考251
8.8通過網絡傳輸文件251
8.8.1預備知識251
8.8.2實戰演練251
8.8.3補充內容252
8.8.4參考254
8.9連接無線網絡254
8.9.1預備知識254
8.9.2實戰演練254
8.9.3工作原理255
8.9.4參考256
8.10實現SSH的無密碼自動登錄256
8.10.1預備知識256
8.10.2實戰演練256
8.11使用SSH實現端口轉發257
8.11.1實戰演練257
8.11.2補充內容258
8.12在本地掛載點上掛載遠程驅動器259
8.12.1預備知識259
8.12.2實戰演練259
8.12.3參考259
8.13分析網絡流量與端口259
8.13.1預備知識259
8.13.2實戰演練260
8.13.3工作原理260
8.13.4補充內容261
8.14測量網絡帶寬261
8.15創建套接字262
8.15.1預備知識262
8.15.2實戰演練262
8.15.3補充內容263
8.15.4工作原理263
8.16搭建網橋264
8.16.1預備知識264
8.16.2實戰演練264
8.17 Internet連接共享265
8.17.1預備知識265
8.17.2實戰演練265
8.17.3工作原理266
8.18使用iptables架設簡易防火牆266
8.18.1實戰演練267
8.18.2工作原理267
8.18.3補充內容268
8.19創建虛擬私有網絡268
8.19 .1預備知識268
8.19.2實戰演練269
第9章明察秋毫274
9.1簡介274
9.2監視磁盤使用情況274
9.2.1預備知識275
9.2.2實戰演練275
9.2.3補充內容275
9.3計算命令執行時間279
9.3 .1實戰演練279
9.3.2工作原理281
9.4收集登錄用戶、啟動日誌及啟動故障的相關信息281
9.4.1預備知識282
9.4.2實戰演練282
9.5列出1小時內佔用CPU多的10個進程284
9.5.1預備知識284
9.5.2實戰演練284
9.5.3工作原理285
9.5.4參考286
9.6使用watch監視命令輸出286
9.6.1實戰演練286
9.6.2補充內容286
9.7記錄文件及目錄訪問情況287
9.7.1預備知識287
9.7.2實戰演練287
9.7.3工作原理287
9.8使用syslog記錄日誌288
9.8.1預備知識288
9.8.2實戰演練289
9.8.3參考289
9.9使用logrotate管理日誌文件290
9.9.1預備知識290
9.9.2實戰演練290
9.9.3工作原理290
9.10通過監視用戶登錄找出入侵者291
9.10.1預備知識291
9.10.2實戰演練291
9.10.3工作原理293
9.11監視遠程磁盤的健康情況293
9.11.1預備知識293
9.11.2實戰演練294
9.11.3工作原理295
9.11.4參考295
9.12確定係統中用戶的活躍時段295
9.12. 1預備知識296
9.12.2實戰演練296
9.12.3工作原理297
9.13電源使用情況的測量與優化297
9.13.1預備知識298
9.13.2實戰演練298
9.14監視磁盤活動298
9.14.1預備知識298
9.14.2實戰演練299
9.15檢查磁盤及文件系統錯誤299
9.15.1預備知識299
9.15.2實戰演練299
9.15.3工作原理300
9.16檢查磁盤健康情況300
9.16 .1預備知識301
9.16.2實戰演練301
9.16.3工作原理303
9.17獲取磁盤統計數據303
9.17.1預備知識303
9.17.2實戰演練303
9.17.3工作原理304
9.17.4補充內容304
第 10章管理重任305
10.1簡介305
10.2收集進程信息305
10.2.1預備知識305
10.2.2實戰演練306
10.2.3工作原理307
10.2.4補充內容307
10.2.5參考312
10.3 which、whereis、whatis與file 312
10.4殺死進程以及發送和響應信號313
10.4.1預備知識313
10.4.2實戰演練313
10.4.3補充內容314
10.5向用戶終端發送消息316
10.5.1預備知識316
10.5.2實戰演練317
10.6 /proc文件系統318
10.7收集系統信息319
10.8使用cron進行調度321
10.8.1預備知識321
10.8.2實戰演練321
10.8. 3工作原理322
10.8.4補充內容323
10.9數據庫的形式及用法324
10.9.1預備知識324
10.9.2實戰演練325
10.9.3補充內容325
10.10讀寫SQLite數據庫326
10.10.1預備知識326
10.10.2實戰演練327
10.10.3工作原理327
10.10.4補充內容327
10.11讀寫MySQL數據庫328
10.11.1預備知識329
10.11.2實戰演練329
10.11.3工作原理332
10.12用戶管理腳本333
10.12.1實戰演練333
10.12.2工作原理335
10.13圖像文件的批量縮放及格式轉換336
10.13.1預備知識336
10.13.2實戰演練336
10.13.3工作原理338
10.13.4參考339
10.14終端截圖339
10.14.1預備知識339
10.14.2實戰演練340
10.15集中管理多個終端340
10.15.1預備知識340
10.15.2實戰演練341
第11章覓跡尋踪342
11.1簡介342
11.2使用tcpdump跟踪分組342
11.2.1預備知識342
11.2.2實戰演練343
11.2.3工作原理345
11.3使用ngrep查找分組346
11.3.1預備知識346
11.3.2實戰演練346
11.3 .3工作原理347
11.3.4補充內容347
11.4使用ip跟踪網絡路由347
11.4.1預備知識347
11.4.2實戰演練348
11.4.3工作原理349
11.5使用strace跟踪系統調用349
11.5.1預備知識350
11.5 .2實戰演練350
11.5.3工作原理351
11.6使用ltrace跟踪動態庫函數352
11.6.1預備知識352
11.6.2實戰演練352
11.6.3工作原理353
11.6.4補充內容353
第12章系統調優355
12.1簡介355
12.2識別服務356
12.2.1預備知識356
12.2.2實戰演練357
12.2.3補充內容359
12.3使用ss收集套接字數據360
12.3.1預備知識360
12.3.2實戰演練360
12.3.3工作原理361
12.4使用dstat收集系統I/O使用情況362
12.4.1預備知識362
12.4.2實戰演練362
12.4.3工作原理363
12.4.4補充內容363
12.5使用pidstat找出資源佔用大戶364
12.5.1預備知識364
12.5.2實戰演練364
12.5.3工作原理364
12.6使用sysctl調優Linux內核365
12.6.1預備知識365
12.6.2實戰演練365
12.6.3工作原理366
12.6.4補充內容366
12.7使用配置文件調優Linux系統366
12.7.1預備知識367
12.7.2實戰演練367
12.7.3工作原理367
12.8使用nice命令更改調度器優先級367
12.8.1實戰演練367
12.8.2工作原理368
12.8.3補充內容368
第13章在雲端369
13.1簡介369
13.2使用Linux容器370
13.2.1預備知識370
13.2.2實戰演練371
13.2.3工作原理377
13.3使用Docker 377
13.3.1預備知識377
13.3.2實戰演練378
13.3.3工作原理381
13.4在Linux中使用虛擬機381
13.4.1預備知識381
13.4.2實戰演練382
13.5雲端的Linux 382
13.5.1預備知識382
13.5.2實戰演練384
13.5.3補充內容384
作者介紹
[美]克里夫·弗林特(Clif Flynt)、 [印]薩拉特?拉克什曼(Sarath Lakshman)、[印]山塔努?圖沙爾(Shantanu Tushar)譯者:門佳
Clif Flynt,Tcl/Tk及Linux用戶社區活躍分子,經常在技術會議和用戶小組中發表演說。Noumena公司創始人,負責開發定制軟件和舉辦培訓課程。另著有Tcl/Tk:A Developer's Guide一書。
Sarath Lakshman,Linux天才程序員、開源軟件及GNU/Linux活躍分子。SLYNUX(2005)的開發者而,Linux For You專欄作家。在Fedora、Pardus Linux、PiTiVi、Ubuntu以及Google編程夏令營等項目中均做出了不可估量的貢獻。
Shantanu Tushar,GNU/Linux用戶,KDE社區重要貢獻者,維護著Calligra Active(用於Tablets的KDE辦公文檔查看器)、Plasma Media Center以及Gluon Player。Shantanu堅信終有一天編程會變得無比輕鬆,每個人都會熱衷於為計算機編寫程序。