
內容簡介
這是一本關於Linux命令行與shell腳本編程的全方位教程,主要包括四大部分 :Linux命令行、shell腳本編程基礎、高級shell腳本編程,以及創建和管理實用的腳本。本書這一版針對Linux係統的最新特性進行了全麵更新,不僅涵蓋了詳盡的動手教程和現實世界中的實用信息,還提供了與所學內容相關的參考信息和背景資料。通過本書的學習,你能輕鬆寫出自己的shell腳本。
作者簡介
【作者簡介】
理查德·布盧姆(RichardBlum),從事係統管理和網絡管理工作近40年,在Unix、Linux、Novell、WindowsServer等領域身經百戰,著有多部Linux暢銷書。此外,他的Linux在線課程被世界多所大學和學院采用。
克裏斯蒂娜·布雷斯納漢(ChristineBresnahan),擁有近40年的係統管理經驗,Udemy講師,講授兩門Linux在線課程,持有CompTIALinux+、LPIC-1、LinuxEssentials認證。
【譯者簡介】
門佳,GNU/Linux深度用戶,喜歡溯本求源,挖掘技術背後的來龍去脈,對程序語言設計理論、編譯技術、操作係統設計與實現、Web開發等領域均有涉獵,譯著包括《LinuxShell腳本攻略》《shell腳本實戰(第2版)》《bashshell腳本編程經典實例(第2版)》以及本書第2版和第3版等。
目錄
第一部分Linux命令行第1章初識Linuxshell2
1.1Linux初探2
1.1.1深入探究Linux內核3
1.1.2GNU實用工具7
1.1.3Linux桌麵環境9
1.2Linux發行版13
1.2.1核心Linux發行版14
1.2.2特定用途的Linux發行版14
1.3小結15
第2章走進shell16
2.1進入命令行16
2.1.1控製台終端16
2.1.2圖形化終端17
2.2通過Linux控製台終端訪問CLI18
2.3通過圖形化終端仿真器訪問CLI20
2.4使用GNOMETerminal終端仿真器21
2.4.1訪問GNOMETerminal21
2.4.2菜單欄25
2.5使用Konsole終端仿真器27
2.5.1訪問Konsole終端仿真器27
2.5.2菜單欄29
2.6使用xterm終端仿真器32
2.6.1訪問xterm33
2.6.2命令行選項33
2.7小結34
第3章bashshell基礎命令36
3.1啟動shell36
3.2使用shell提示符37
3.3與bash手冊交互37
3.4瀏覽文件係統41
3.4.1Linux文件係統41
3.4.2遍歷目錄44
3.5列出文件和目錄46
3.5.1顯示基本列表46
3.5.2顯示長列表48
3.5.3過濾輸出列表49
3.6處理文件51
3.6.1創建文件51
3.6.2複製文件51
3.6.3使用命令行補全53
3.6.4鏈接文件54
3.6.5文件重命名55
3.6.6刪除文件57
3.7管理目錄57
3.7.1創建目錄57
3.7.2刪除目錄58
3.8查看文件內容60
3.8.1查看文件類型60
3.8.2查看整個文件61
3.8.3查看部分文件63
3.9小結64
第4章更多的bashshell命令66
4.1監測程序66
4.1.1探查進程66
4.1.2實時監測進程72
4.1.3結束進程74
4.2監測磁盤空間75
4.2.1掛載存儲設備75
4.2.2使用df命令78
4.2.3使用du命令79
4.3處理數據文件80
4.3.1數據排序80
4.3.2數據搜索83
4.3.3數據壓縮85
4.3.4數據歸檔86
4.4小結87
第5章理解shell88
5.1shell的類型88
5.2shell的父子關係91
5.2.1查看進程列表95
5.2.2別出心裁的子shell用法96
5.3理解外部命令和內建命令99
5.3.1外部命令100
5.3.2內建命令101
5.4小結106
第6章Linux環境變量107
6.1什麼是環境變量107
6.1.1全局環境變量108
6.1.2局部環境變量109
6.2設置用戶自定義變量110
6.2.1設置局部用戶自定義變量110
6.2.2設置全局環境變量111
6.3刪除環境變量113
6.4默認的shell環境變量113
6.5設置PATH環境變量117
6.6定位係統環境變量118
6.6.1登錄shell119
6.6.2交互式shell進程123
6.6.3非交互式shell124
6.6.4環境變量持久化124
6.7數組變量125
6.8小結126
第7章理解Linux文件權限127
7.1Linux的安全性127
7.1.1/etc/passwd文件127
7.1.2/etc/shadow文件129
7.1.3添加新用戶129
7.1.4刪除用戶132
7.1.5修改用戶132
7.2使用Linux組135
7.2.1/etc/group文件135
7.2.2創建新組136
7.2.3修改組137
7.3理解文件權限137
7.3.1使用文件權限符號137
7.3.2默認文件權限139
7.4更改安全設置140
7.4.1修改權限140
7.4.2改變所屬關係141
7.5共享文件142
7.6訪問控製列表144
7.7小結145
第8章管理文件係統147
8.1探索Linux文件係統147
8.1.1Linux文件係統的演進147
8.1.2日誌文件係統148
8.1.3卷管理文件係統150
8.2使用文件係統151
8.2.1創建分區151
8.2.2創建文件係統155
8.2.3文件係統的檢查與修複157
8.3邏輯卷管理158
8.3.1LVM布局159
8.3.2Linux中的LVM159
8.3.3使用LinuxLVM162
8.4小結163
第9章安裝軟件164
9.1軟件包管理基礎164
9.2基於Debian的係統165
9.2.1使用apt管理軟件包165
9.2.2使用apt安裝軟件包167
9.2.3使用apt升級軟件169
9.2.4使用apt卸載軟件包170
9.2.5apt倉庫171
9.3基於RedHat的係統173
9.3.1列出已安裝的軟件包173
9.3.2使用dnf安裝軟件174
9.3.3使用dnf升級軟件175
9.3.4使用dnf卸載軟件176
9.3.5處理損壞的依賴關係176
9.3.6RPM倉庫176
9.4使用容器管理軟件177
9.4.1使用snap容器177
9.4.2使用flatpak容器179
9.5從源代碼安裝180
9.6小結183
第10章文本編輯器185
10.1vim編輯器185
10.1.1檢查vim軟件包185
10.1.2vim基礎187
10.1.3編輯數據189
10.1.4複製和粘貼189
10.1.5查找和替換190
10.2nano編輯器191
10.3Emacs編輯器193
10.3.1檢查Emacs軟件包193
10.3.2在控製台中使用Emacs194
10.3.3在GUI中使用Emacs199
10.4KDE係編輯器200
10.4.1KWrite編輯器200
10.4.2Kate編輯器204
10.5GNOME編輯器208
10.5.1啟動gedit208
10.5.2gedit的基本功能209
10.5.3管理插件211
10.6小結213
第二部分shell腳本編程基礎
第11章構建基礎腳本216
11.1使用多個命令216
11.2創建shell腳本文件217
11.3顯示消息218
11.4使用變量220
11.4.1環境變量220
11.4.2用戶自定義變量221
11.4.3命令替換222
11.5重定向輸入和輸出224
11.5.1輸出重定向224
11.5.2輸入重定向225
11.6管道226
11.7執行數學運算228
11.7.1expr命令228
11.7.2使用方括號230
11.7.3浮點數解決方案231
11.8退出腳本234
11.8.1查看退出狀態碼234
11.8.2exit命令235
11.9實戰演練237
11.10小結238
第12章結構化命令239
12.1使用if-then語句239
12.2if-then-else語句242
12.3嵌套if語句243
12.4test命令246
12.4.1數值比較248
12.4.2字符串比較249
12.4.3文件比較253
12.5複合條件測試262
12.6if-then的高級特性263
12.6.1使用單括號264
12.6.2使用雙括號265
12.6.3使用雙方括號266
12.7case命令267
12.8實戰演練268
12.9小結273
第13章更多的結構化命令274
13.1for命令274
13.1.1讀取列表中的值275
13.1.2讀取列表中的複雜值276
13.1.3從變量中讀取值列表277
13.1.4從命令中讀取值列表278
13.1.5更改字段分隔符279
13.1.6使用通配符讀取目錄280
13.2C語言風格的for命令282
13.2.1C語言中的for命令282
13.2.2使用多個變量283
13.3while命令284
13.3.1while的基本格式284
13.3.2使用多個測試命令285
13.4until命令286
13.5嵌套循環287
13.6循環處理文件數據290
13.7循環控製291
13.7.1break命令291
13.7.2continue命令294
13.8處理循環的輸出296
13.9實戰演練297
13.9.1查找可執行文件297
13.9.2創建多個用戶賬戶299
13.10小結300
第14章處理用戶輸入301
14.1傳遞參數301
14.1.1讀取參數301
14.1.2讀取腳本名303
14.1.3參數測試305
14.2特殊參數變量305
14.2.1參數統計305
14.2.2獲取所有的數據307
14.3移動參數309
14.4處理選項310
14.4.1查找選項311
14.4.2使用getopt命令314
14.4.3使用getopts命令317
14.5選項標準化319
14.6獲取用戶輸入320
14.6.1基本的讀取320
14.6.2超時322
14.6.3無顯示讀取323
14.6.4從文件中讀取323
14.7實戰演練324
14.8小結328
第15章呈現數據329
15.1理解輸入和輸出329
15.1.1標準文件描述符329
15.1.2重定向錯誤332
15.2在腳本中重定向輸出333
15.2.1臨時重定向333
15.2.2永久重定向334
15.3在腳本中重定向輸入335
15.4創建自己的重定向336
15.4.1創建輸出文件描述符336
15.4.2重定向文件描述符337
15.4.3創建輸入文件描述符337
15.4.4創建讀/寫文件描述符338
15.4.5關閉文件描述符339
15.5列出打開的文件描述符340
15.6抑製命令輸出341
15.7使用臨時文件342
15.7.1創建本地臨時文件342
15.7.2在/tmp目錄中創建臨時文件344
15.7.3創建臨時目錄344
15.8記錄消息345
15.9實戰演練346
15.10小結348
第16章腳本控製349
16.1處理信號349
16.1.1重溫Linux信號349
16.1.2產生信號350
16.1.3捕獲信號352
16.1.4捕獲腳本退出353
16.1.5修改或移除信號捕獲354
16.2以後台模式運行腳本356
16.2.1後台運行腳本356
16.2.2運行多個後台作業358
16.3在非控製台下運行腳本359
16.4作業控製360
16.4.1查看作業360
16.4.2重啟已停止的作業362
16.5調整謙讓度363
16.5.1nice命令363
16.5.2renice命令364
16.6定時運行作業364
16.6.1使用at命令調度作業364
16.6.2調度需要定期運行的腳本368
16.7使用新shell啟動腳本371
16.8實戰演練372
16.9小結378
第三部分高級shell腳本編程
第17章創建函數380
17.1腳本函數基礎380
17.1.1創建函數381
17.1.2使用函數381
17.2函數返回值383
17.2.1默認的退出狀態碼383
17.2.2使用return命令384
17.2.3使用函數輸出385
17.3在函數中使用變量386
17.3.1向函數傳遞參數386
17.3.2在函數中處理變量388
17.4數組變量和函數390
17.4.1向函數傳遞數組390
17.4.2從函數返回數組392
17.5函數遞歸392
17.6創建庫393
17.7在命令行中使用函數395
17.7.1在命令行中創建函數395
17.7.2在.bashrc文件中定義函數396
17.8實戰演練398
17.8.1下載及安裝398
17.8.2構建庫398
17.8.3shtool庫函數399
17.8.4使用庫400
17.9小結401
第18章圖形化桌麵環境中的腳本編程402
18.1創建文本菜單402
18.1.1創建菜單布局403
18.1.2創建菜單函數404
18.1.3添加菜單邏輯404
18.1.4整合shell腳本菜單405
18.1.5使用select命令406
18.2創建文本窗口部件407
18.2.1dialog軟件包408
18.2.2dialog選項413
18.2.3在腳本中使用dialog命令415
18.3圖形化窗口部件417
18.3.1KDE環境417
18.3.2GNOME環境420
18.4實戰演練424
18.5小結427
第19章初識sed和gawk428
19.1文本處理428
19.1.1sed編輯器428
19.1.2gawk編輯器431
19.2sed編輯器基礎命令437
19.2.1更多的替換選項437
19.2.2使用地址438
19.2.3刪除行441
19.2.4插入和附加文本443
19.2.5修改行445
19.2.6轉換命令446
19.2.7再探打印447
19.2.8使用sed處理文件449
19.3實戰演練451
19.4小結456
第20章正則表達式457
20.1正則表達式基礎457
20.1.1定義457
20.1.2正則表達式的類型458
20.2定義BRE模式459
20.2.1普通文本459
20.2.2特殊字符460
20.2.3錨點字符461
20.2.4點號字符463
20.2.5字符組464
20.2.6排除型字符組466
20.2.7區間466
20.2.8特殊的字符組467
20.2.9星號468
20.3擴展正則表達式469
20.3.1問號469
20.3.2加號470
20.3.3花括號470
20.3.4豎線符號472
20.3.5表達式分組472
20.4實戰演練473
20.4.1目錄文件計數473
20.4.2驗證電話號碼474
20.4.3解析email地址476
20.5小結477
第21章sed進階478
21.1多行命令478
21.1.1next命令479
21.1.2多行刪除命令482
21.1.3多行打印命令482
21.2保留空間483
21.3排除命令485
21.4改變執行流程487
21.4.1分支487
21.4.2測試489
21.5模式替換490
21.5.1&符號491
21.5.2替換單獨的單詞491
21.6在腳本中使用sed492
21.6.1使用包裝器492
21.6.2重定向sed的輸出493
21.7創建sed實用工具494
21.7.1加倍行間距494
21.7.2對可能含有空行的文件加倍行間距495
21.7.3給文件中的行編號495
21.7.4打印末尾行496
21.7.5刪除行498
21.7.6刪除HTML標簽500
21.8實戰演練502
21.9小結506
第22章gawk進階508
22.1使用變量508
22.1.1內建變量508
22.1.2自定義變量514
22.2處理數組515
22.2.1定義數組變量515
22.2.2遍歷數組變量516
22.2.3刪除數組變量517
22.3使用模式517
22.3.1正則表達式517
22.3.2匹配操作符518
22.3.3數學表達式519
22.4結構化命令519
22.4.1if語句519
22.4.2while語句521
22.4.3do-while語句522
22.4.4for語句523
22.5格式化打印523
22.6內建函數526
22.6.1數學函數526
22.6.2字符串函數527
22.6.3時間函數529
22.7自定義函數529
22.7.1定義函數529
22.7.2使用自定義函數530
22.7.3創建函數庫530
22.8實戰演練531
22.9小結532
第23章使用其他shell534
23.1什麼是dashshell534
23.2dashshell的特性535
23.2.1dash命令行選項535
23.2.2dash環境變量536
23.2.3dash內建命令538
23.3dash腳本編程539
23.3.1創建dash腳本539
23.3.2不能使用的特性539
23.4zshshell541
23.5zshshell的組成542
23.5.1shell選項542
23.5.2內建命令543
23.6zsh腳本編程546
23.6.1數學運算547
23.6.2結構化命令548
23.6.3函數549
23.7實戰演練549
23.8小結550
第四部分創建和管理實用的腳本
第24章編寫簡單的腳本實用工具552
24.1備份552
24.1.1日常備份552
24.1.2創建按小時歸檔的腳本559
24.2刪除賬戶562
24.2.1功能需求562
24.2.2創建腳本570
24.2.3運行腳本575
24.3係統監控577
24.3.1獲得默認的shell審計功能577
24.3.2權限審計功能581
24.3.3創建腳本582
24.3.4運行腳本585
24.4小結586
第25章井井有條588
25.1理解版本控製588
25.1.1工作目錄589
25.1.2暫存區590
25.1.3本地倉庫590
25.1.4遠程倉庫590
25.1.5分支590
25.1.6克隆591
25.1.7使用Git作為VCS591
25.2設置Git環境591
25.3使用Git提交文件595
25.4小結601
附錄Abash命令快速指南602
附錄Bsed和gawk快速指南612
······
最後修改:2024 年 06 月 27 日
© 允許規範轉載
