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