Linux 命令行與 shell 腳本編程大全, 4/e Linux Command Line and Shell Scripting Bible, 4/e

Richard Blum,Christine Bresnahan

  • Linux 命令行與 shell 腳本編程大全, 4/e-preview-1
  • Linux 命令行與 shell 腳本編程大全, 4/e-preview-2
Linux 命令行與 shell 腳本編程大全, 4/e-preview-1

買這商品的人也買了...

商品描述

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

本書適合Linux系統管理員及相關開發人員閱讀。

作者簡介

理查德·布卢姆(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版等。

目錄大綱

第 一部分 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