Linux命令行與shell腳本編程大全(第4版)

Linux命令行與shell腳本編程大全(第4版)

作者: Richard Blum Christine Bresnahan
出版社: 人民郵電
出版在: 2022-06-01
ISBN-13: 9787115592514
ISBN-10: 7115592519
總頁數: 620 頁





內容描述


這是一本關於Linux命令行與shell腳本編程的系統性教程,主要包括四大部分 :Linux命令行、shell腳本編程基礎、高級shell腳本編程,以及創建和管理實用的腳本。本書這一版針對Linux系統的新特性進行了更新,不僅涵蓋了詳盡的動手教程和現實世界中的實用信息,還提供了與所學內容相關的參考信息和背景資料。通過本書的學習,你能輕松寫出自己的shell腳本。
本書適合Linux系統管理員及相關開發人員閱讀。


目錄大綱


第 一部分 Linux命令行
第 1 章 初識Linux shell 2
1.1 Linux初探 2
1.1.1 深入探究Linux內核 3
1.1.2 GNU實用工具 7
1.1.3 Linux桌面環境 9
1.2 Linux發行版 13
1.2.1 核心Linux發行版 14
1.2.2 特定用途的Linux發行版 14
1.3 小結 15
第 2 章 走進shell 16
2.1 進入命令行 16
2.1.1 控制台終端 16
2.1.2 圖形化終端 17
2.2 通過Linux控制台終端訪問CLI 18
2.3 通過圖形化終端模擬器訪問CLI 20
2.4 使用GNOME Terminal終端模擬器 21
2.4.1 訪問GNOME Terminal 21
2.4.2 菜單欄 25
2.5 使用Konsole終端模擬器 27
2.5.1 訪問Konsole終端模擬器 27
2.5.2 菜單欄 29
2.6 使用xterm終端模擬器 32
2.6.1 訪問xterm 33
2.6.2 命令行選項 33
2.7 小結 34
第 3 章 bash shell基礎命令 36
3.1 啟動shell 36
3.2 使用shell提示符 37
3.3 與bash手冊交互 37
3.4 瀏覽文件系統 41
3.4.1 Linux文件系統 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 章 更多的bash shell命令 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 章 理解shell 88
5.1 shell的類型 88
5.2 shell的父子關系 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 登錄shell 119
6.6.2 交互式shell進程 123
6.6.3 非交互式shell 124
6.6.4 環境變量持久化 124
6.7 數組變量 125
6.8 小結 126
第 7 章 理解Linux文件權限 127
7.1 Linux的安全性 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.1 Linux文件系統的演進 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.1 LVM佈局 159
8.3.2 Linux中的LVM 159
8.3.3 使用Linux LVM 162
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.5 apt倉庫 171
9.3 基於Red Hat的系統 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.6 RPM倉庫 176
9.4 使用容器管理軟件 177
9.4.1 使用snap容器 177
9.4.2 使用flatpak容器 179
9.5 從源代碼安裝 180
9.6 小結 183
第 10 章 文本編輯器 185
10.1 vim編輯器 185
10.1.1 檢查vim軟件包 185
10.1.2 vim基礎 187
10.1.3 編輯數據 189
10.1.4 復制和粘貼 189
10.1.5 查找和替換 190
10.2 nano編輯器 191
10.3 Emacs編輯器 193
10.3.1 檢查Emacs軟件包 193
10.3.2 在控制臺中使用Emacs 194
10.3.3 在GUI中使用Emacs 199
10.4 KDE系編輯器 200
10.4.1 KWrite編輯器 200
10.4.2 Kate編輯器 204
10.5 GNOME編輯器 208
10.5.1 啟動gedit 208
10.5.2 gedit的基本功能 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.1 expr命令 228
11.7.2 使用方括號 230
11.7.3 浮點數解決方案 231
11.8 退出腳本 234
11.8.1 查看退出狀態碼 234
11.8.2 exit命令 235
11.9 實戰演練 237
11.10 小結 238
第 12 章 結構化命令 239
12.1 使用if-then語句 239
12.2 if-then-else語句 242
12.3 嵌套if語句 243
12.4 test命令 246
12.4.1 數值比較 248
12.4.2 字符串比較 249
12.4.3 文件比較 253
12.5 復合條件測試 262
12.6 if-then的高級特性 263
12.6.1 使用單括號 264
12.6.2 使用雙括號 265
12.6.3 使用雙方括號 266
12.7 case命令 267
12.8 實戰演練 268
12.9 小結 273
第 13 章 更多的結構化命令 274
13.1 for命令 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.2 C語言風格的for命令 282
13.2.1 C語言中的for命令 282
13.2.2 使用多個變量 283
13.3 while命令 284
13.3.1 while的基本格式 284
13.3.2 使用多個測試命令 285
13.4 until命令 286
13.5 嵌套循環 287
13.6 循環處理文件數據 290
13.7 循環控制 291
13.7.1 break命令 291
13.7.2 continue命令 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.1 nice命令 363
16.5.2 renice命令 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.3 shtool庫函數 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.1 dialog軟件包 408
18.2.2 dialog選項 413
18.2.3 在腳本中使用dialog命令 415
18.3 圖形化窗口部件 417
18.3.1 KDE環境 417
18.3.2 GNOME環境 420
18.4 實戰演練 424
18.5 小結 427
第 19 章 初識sed和gawk 428
19.1 文本處理 428
19.1.1 sed編輯器 428
19.1.2 gawk編輯器 431
19.2 sed編輯器基礎命令 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.1 next命令 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 在腳本中使用sed 492
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.1 if語句 519
22.4.2 while語句 521
22.4.3 do-while語句 522
22.4.4 for語句 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 章 使用其他shell 534
23.1 什麽是dash shell 534
23.2 dash shell的特性 535
23.2.1 dash命令行選項 535
23.2.2 dash環境變量 536
23.2.3 dash內建命令 538
23.3 dash腳本編程 539
23.3.1 創建dash腳本 539
23.3.2 不能使用的特性 539
23.4 zsh shell 541
23.5 zsh shell的組成 542
23.5.1 shell選項 542
23.5.2 內建命令 543
23.6 zsh腳本編程 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作為VCS 591
25.2 設置Git環境 591
25.3 使用Git提交文件 595
25.4 小結 601
附錄 A bash命令快速指南 602
附錄 B sed和gawk快速指南 612


作者介紹


理查德·布卢姆(Richard Blum),从事系统管理和网络管理工作近40年,在Unix、Linux、Novell、Windows Server等领域身经百战,著有多部Linux图书。此外,他的Linux在线课程被世界多所大学和学院采用。
 
克里斯蒂娜·布雷斯纳汉(Christine Bresnahan),拥有近40年的系统管理经验,Udemy讲师,讲授两门Linux在线课程,持有CompTIA Linux+、LPIC-1、Linux Essentials认证。
 
【译者介绍】
 
门佳,GNU/Linux深度用户,喜欢溯本求源,挖掘技术背后的来龙去脉,对程序语言设计理论、编译技术、操作系统设计与实现、Web开发等领域均有涉猎,译著包括《Linux Shell脚本攻略》《shell脚本实战(第2版)》《bash shell脚本编程经典实例(第2版)》以及本书第2版和第3版等。




相關書籍

The Essential Guide to Telecommunications, 5/e (Paperback)

作者 Annabel Z. Dodd

2022-06-01

Clean C++: Sustainable Software Development Patterns and Best Practices with C++ 17

作者 Stephan Roth

2022-06-01

C語言程序設計(第2版)(微課版)

作者 李剛 徐義晗

2022-06-01