Linux 命令行與 Shell 腳本編程

Linux 命令行與 Shell 腳本編程

作者: 何偉娜 郝軍
出版社: 清華大學
出版在: 2021-07-01
ISBN-13: 9787302582229
ISBN-10: 730258222X
裝訂格式: 平裝
總頁數: 390 頁





內容描述


現在Linux系統的應用越來越廣泛,而在Linux系統下的自動化運維工作也越來越多,使用Shell腳本可以通過自動化運維來提高運維效率。本書是一本純粹的Linux系統管理與Shell編程入門書,目的是幫助讀者理解Linux系統,並學會使用Shell腳本來完成Linux下各種復雜的運維工作。 本書共23章,內容包括初識Linux和Shell、走進Shell、Bash Shell基礎命令、更多的Bash Shell命令、變量和環境變量、使用特殊符號、管理文件系統、使用編輯器、結構化命令、Shell中的循環結構、創建函數、處理數據的輸入、處理數據的輸出、圖形化Shell編程、安裝軟件程序、正則表達式、grep命令、sed編程、gawk編程、腳本控制、Shell腳本系統管理實戰、Shell腳本數據庫操作實戰、兩個Shell腳本編程實戰。 本書內容詳盡、示例豐富,適合Linux初學者、Shell編程初學者、自動化運維腳本開發人員閱讀,可作為Linux系統運維人員的參考書,也可作為高等院校和培訓機構電腦相關專業的補充教材。


目錄大綱


第1章 初識Linux和Shell 1
1.1 Linux系統基礎 1
1.1.1 Linux系統的發展 1
1.1.2 Linux系統和Windows系統的區別 2
1.1.3 Linux的啟動過程 3
1.2 Linux文件系統基礎 6
1.2.1 必須了解的節點inode 6
1.2.2 Linux系統文件結構 7
1.3 學會Linux系統的基本使用10
1.3.1 系統的登錄與退出10
1.3.2 系統的基本配置12
1.4 初識Shell 13
1.4.1 什麼是Shell 13
1.4.2 Shell在Linux系統中的作用13
1.4.3 Shell的種類14
1.5 小結15
第2章 走進Shell 16
2.1 Shell腳本語言概述16
2.1.1 Shell腳本語言的定義16
2.1.2 Shell終端的基本使用17
2.1.3 Shell終端菜單的使用17
2.2 Shell命令格式介紹18
2.2.1 Shell命令格式19
2.2.2 命令行界面介紹19
2.2.3 在Linux系統中如何獲取幫助20
2.3 diyi個Shell程序:Hello,Bash Shell 22
2.3.1 創建Shell腳本22
2.3.2 Shell腳本中的格式26
2.3.3 如何執行Shell程序26
2.4 小結28
第3章 Bash Shell基礎命令29
3.1 Shell命令使用基礎29
3.1.1 文件類型29
3.1.2 路徑和相對路徑30
3.1.3 文件屬性和文件權限31
3.1.4 用戶和用戶組32
3.1.5 特殊目錄介紹37
3.2 用戶和用戶組管理38
3.2.1 用戶管理常用命令38
3.2.2 用戶組管理常用命令41
3.2.3 其他常用命令43
3.3 文件和目錄操作46
3.3.1 文件操作常用命令46
3.3.2 目錄操作常用命令50
3.3.3 文件權限管理常用命令54
3.3.4 查找文件常用命令56
3.4 系統管理57
3.4.1 網絡操作常用命令57
3.4.2 磁盤信息查看常用命令61
3.5 小結62
第4章 更多的Bash Shell命令63
4.1 監測程序63
4.1.1 探查進程——ps命令63
4.1.2 實時監測進程——top命令64
4.1.3 結束進程——kill命令66
4.1.4 查看內存空間——free命令66
4.2 監測磁盤空間67
4.2.1 掛載外部存儲——mount命令67
4.2.2 卸載外部存儲——umount命令68
4.2.3 顯示剩餘磁盤空間——df命令69
4.2.4 計算磁盤使用量——du命令69
4.3 處理數據文件70
4.3.1 排序數據——sort命令70
4.3.2 搜索數據——grep命令71
4.3.3 壓縮數據——gzip命令73
4.3.4 打包數據——ar命令74
4.4 小結75
第5章 變量和環境變量77
5.1 變量的簡單使用77
5.1.1 變量的使用77
5.1.2 變量的輸入79
5.1.3 變量的輸出命令echo 84
5.2 Shell中特殊變量的使用88
5.2.1 位置參數介紹88
5.2.2 $@和$*的區別89
5.3 環境變量的使用90
5.3.1 Shell中的環境變量90
5.3.2 環境變量的配置文件93
5.3.3 全局環境變量和本地環境變量95
5.3.4 環境變量的設定97
5.3.5 環境變量的取消98
5.4 小結99
第6章 使用特殊符號100
6.1 引號的使用100
6.1.1 單引號的使用101
6.1.2 雙引號的使用102
6.1.3 倒引號的使用103
6.2 通配符和元字符103
6.2.1 使用通配符104
6.2.2 使用元字符107
6.3 管道110
6.4 其他特殊字符介紹111
6.4.1 後台運行符111
6.4.2 括號112
6.4.3 分號114
6.5 小結115
第7章 管理文件系統116
7.1 探索Linux文件系統116
7.1.1 日誌文件系統116
7.1.2
的基礎知識117
7.2 管理文件系統117
7.2.1 創建分區117
7.2.2 創建文件系統121
7.2.3 文件系統的檢查與修復122
7.3 小結122
第8章 使用編輯器123
8.1 vim編輯器123
8.1.1 檢查vim軟件包123
8.1.2 vim基礎125
8.1.3 編輯數據127
8.1.4 複製和粘貼130
8.1.5 查找和替換131
8.2 nano編輯器132
8.2.1 檢查nano軟件包132
8.2.2 nano編輯器的基本操作132
8.3 Emacs編輯器134
8.3.1 檢查Emacs軟件包134
8.3.2 使用Emacs 136
8.4 GNOME編輯器138
8.4.1 啟動Gedit 138
8.4.2 基本的Gedit功能139
8.5 小結141
第9章 結構化命令142
9.1 測試命令的使用142
9.1.1 測試命令的基礎結構142
9.1.2 測試文件類型144
9.1.3 測試字符串148
9.1.4 測試數值150
9.1.5 複合測試條件151
9.2 if分支結構153
9.2.1 if -then結構153
9.2.2 if -then-else結構154
9.2.3 嵌套結構156
9.3 case多條件分支結構159
9.3.1 case結構基礎159
9.3.2 在Shell腳本中使用case結構161
9.3.3 select命令的使用162
9.4 小結163
第10章 Shell中的循環結構164
10.1 for循環164
10.1.1 使用for-in結構164
10.1.2 C式for結構168
10.2 while命令的使用170
10.2.1 使用while結構171
10.2.2 多條件的while結構172
10.2.3 使用until命令172
10.3 命令的嵌套174
10.3.1 for命令的嵌套174
10.3.2 while命令的嵌套177
10.3.3 until命令的嵌套179
10.4 循環控制符180
10.4.1 使用break中斷180
10.4.2 使用continue命令183
10.5 小結184
第11章 創建函數185
11.1 腳本函數的基本用法185
11.1.1 函數的創建與使用185
11.1.2 函數的參數187
11.2 函數的返回值189
11.2.1 返回值基礎189
11.2.2 函數的默認返回值190
11.2.3 return命令的使用191
11.2.4 使用函數的返回值192
11.3 函數中的全局變量和局部變量193
11.3.1 全局變量193
11.3.2 局部變量194
11.4 數組與函數195
11.4.1 數組作為函數參數195
11.4.2 數組作為函數返回值196
11.5 腳本函數遞歸197
11.6 函數的嵌套調用199
11.7 小結200
第12章 處理數據的輸入201
12.1 命令行參數201
12.1.1 讀取參數202
12.1.2 讀取腳本名203
12.1.3 測試參數204
12.2 特殊參數變量206
12.2.1 參數統計206
12.2.2 獲取所有的參數207
12.3 特殊的輸入方式208
12.3.1 移動變量208
12.3.2 讀取文件209
12.4 將選項標準化210
12.5 小結211
第13章 處理數據的輸出212
13.1 理解輸入和輸出212
13.1.1 標准文件描述符213
13.1.2 重定向213
13.2 在腳本中重定向輸出214
13.2.1 重定向214
13.2.2 追加重定向215
13.2.3 重定向216
13.3 在腳本中重定向輸入217
13.4 創建自己的重定向218
13.4.1 創建輸出文件描述符219
13.4.2 創建輸入文件描述符219
13.4.3 關閉文件描述符220
13.5 其他常用操作221
13.5.1 列出打開的文件描述符222
13.5.2 清空命令輸出223
13.5.3 記錄消息224
13.6 小結225
第14章 圖形化Shell編程226
14.1 創建文本菜單226
14.1.1 創建菜單226
14.1.2 創建子菜單函數227
14.1.3 腳本的整合——實現一個計算器229
14.1.4 使用select命令實現菜單230
14.2 製作窗口232
14.2.1 使用dialog包232
14.2.2 dialog幫助選項232
14.2.3 dialog命令的使用234
14.2.4 常用窗口示例238
14.3 顏色的使用243
14.4 小結246
第15章 安裝軟件程序247
15.1 包管理基礎247
15.2 基於Debian的系統248
15.2.1 包倉庫248
15.2.2 搜索軟件包250
15.2.3 安裝軟件包251
15.2.4 更新軟件包252
15.2.5 卸載軟件包252
15.3 基於Red Hat的系統253
15.3.1 yum命令使用簡介253
15.3.2 列出已安裝包254
15.3.3 使用yum安裝軟件256
15.3.4 使用yum更新軟件258
15.3.5 使用yum卸載軟件258
15.3.6 處理損壞的包依賴關係260
15.4 小結260
第16章 正則表達式261
16.1 正則表達式基礎261
16.1.1 正則表達式的定義261
16.1.2 正則表達式的分類262
16.2 基本正則表達式的常用符號263
16.2.1 使用點字符匹配單字符263
16.2.2 使用定位符264
16.2.3 使用“*”匹配字符串中的單字符或其重複序列266
16.2.4 使用“”屏蔽一個特殊字符的含義267
16.3 擴展正則表達式的常用符號267
16.3.1 使用“[]”匹配一個範圍或集合268
16.3.2 使用“{}”匹配模式結果出現的次數268
16.3.3 問號的使用269
16.4 小結270
第17章 grep命令271
17.1 grep的基礎使用271
17.1.1 grep命令的基本使用方式271
17.1.2 grep選項273
17.1.3 行數273
17.1.4 大小寫敏感274
17.1.5 顯示非匹配行276
17.1.6 查詢多個文件或多個關鍵字277
17.2 grep和正則表達式279
17.2.1 模式範圍以及範圍組合279
17.2.2 定位符的使用280
17.2.3 字符匹配281
17.2.4 模式出現機率282
17.2.5 匹配特殊字符283
17.3 grep命令的擴展使用284
17.3.1 類名的使用284
17.3.2 egrep命令的使用285
17.3.3 fgrep命令的使用287
17.4 grep命令使用示例288
17.4.1 目錄搜索——查找特定目錄或文字288
17.4.2 使用ps命令檢索特定的進程289
17.5 小結289
第18章 sed編程291
18.1 認識sed 291
18.1.1 sed工作模式291
18.1.2 sed常用指令292
18.1.3 sed常用選項293
18.1.4 sed地址範圍294
18.2 sed編輯器常用命令295
18.2.1 替換命令的使用296
18.2.2 刪除命令的使用297
18.2.3 文本的添加和替換298
18.3
sed編程300
18.3.1 同時處理多行數據300
18.3.2 sed編輯器的空間301
18.3.3 sed編輯器的反向302
18.3.4 重定向sed的輸出303
18.4 小結304
第19章 gawk編程305
19.1 gawk概述305
19.1.1 gawk基本介紹305
19.1.2 gawk基本使用307
19.2 變量的使用310
19.2.1 內置變量的使用310
19.2.2 自定義變量的使用312
19.2.3 數組的使用313
19.3 結構的使用314
19.3.1 條件結構的使用314
19.3.2 循環結構的使用317
19.3.3 循環結構控制語句319
19.4 函數的使用320
19.4.1 算術函數的使用321
19.4.2 字符串處理函數的使用322
19.4.3 時間函數的使用324
19.5 小結326
第20章 腳本控制327
20.1 Linux信號控制327
20.1.1 Linux信號機制簡介327
20.1.2 使用Shell腳本操作信號329
20.2 進程的控制331
20.2.1 後台運行符介紹331
20.2.2 運行進程的控制333
20.2.3 nohup命令的使用334
20.3 腳本運行的優先級335
20.3.1 優先級介紹335
20.3.2 使用nice指定優先級336
20.3.3 使用renice重置優先級337
20.4 小結338
第21章 Shell腳本系統管理實戰339
21.1 系統監測339
21.1.1 系統監控基礎339
21.1.2 Ubuntu自帶的系統監控工具343
21.1.3 監控腳本的編寫344
21.2 計劃任務的實現345
21.2.1 at命令的使用346
21.2.2 atq命令的使用351
21.2.3 cron的使用352
21.3 網絡管理354
21.3.1 網絡配置354
21.3.2 服務器的安裝358
21.4 日誌管理360
21.4.1 日誌簡介360
21.4.2 守護進程syslogd 361
21.4.3 日誌的備份操作364
21.4.4 日誌的定時操作365
21.5 小結366
第22章 Shell腳本數據庫操作實戰367
22.1 Linux系統中的數據庫367
22.1.1 SQLite簡介367
22.1.2 SQLite的圖形化操作370
22.1.3 MySQL簡介372
22.2 SQL語句375
22.2.1 SQL語言基本介紹375
22.2.2 基本的SQL操作376
22.2.3 在Shell腳本中執行SQL語句378
22.3 實戰:圖書管理系統中數據庫操作379
22.3.1 數據庫操作基本流程380
22.3.2 創建表380
22.3.3 增加圖書信息381
22.3.4 修改圖書信息382
22.3.5 刪除圖書信息383
22.4 小結383
第23章 兩個Shell腳本編程實戰384
23.1 創建日誌文件384
23.1.1 功能分析384
23.1.2 創建腳本386
23.2 遠程複製文件387
23.2.1 功能分析387
23.2.2 創建腳本389
23.3 小結390


作者介紹


何偉娜,平頂山學院副教授,西安電子科技大學碩士。
本人主要從事大數據、深度學習方面的研究。
郝軍,供職於國內的電信運營商,主要職務是開發各種移動運營相關的軟件項目,長期在Linux平台下進行軟件開發,有10餘年的Java開發經驗,開發過通信計費等多種服務端項目。




相關書籍

51單片機C語言程序設計經典實例(第3版)

作者 陳忠平 劉瓊

2021-07-01

雲游戲:5G開啟數字娛樂新時代

作者 林瑞傑等

2021-07-01

Coexistence in Wireless Networks: Challenges and System-Level Solutions in the Unlicensed Bands

作者 Nada Golmie

2021-07-01