圖書簡介
這是一本關於Linux命令行與shell腳本編程的全方位教程,主要包括四大部分:Linux命令行,shell腳本編程基礎,高級shell腳本編程,如何創建實用的shell腳本。本書針對Linux系統的新特性進行了全面更新,不僅涵蓋了詳盡的動手教程和現實世界中的實用信息,還提供了與所學內容相關的參考信息和背景資料。
圖書目錄
第一部分 Linux 命令行
第1 章 初識Linux shell 2
1.1 什麼是Linux 2
1.1.1 深入探究Linux 核心 3
1.1.2 GNU 工具 6
1.1.3 Linux 桌面環境 8
1.2 Linux 發行版 12
1.2.1 核心Linux 發行版 13
1.2.2 特定用途的Linux 發行版 13
1.2.3 Linux LiveCD 14
1.3 小結 15
第2 章 走進shell 16
2.1 進入命令行 16
2.1.1 控制台終端 17
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 選單欄 22
2.5 使用Konsole Terminal 仿真器 25
2.5.1 訪問Konsole Terminal 25
2.5.2 選單欄 26
2.6 使用xterm 終端仿真器 29
2.6.1 訪問xterm 30
2.6.2 命令行參數 30
2.7 小結 32
第3 章 基本的bash shell 命令 33
3.1 啟動shell 33
3.2 shell 提示符 34
3.3 bash 手冊 34
3.4 瀏覽檔案系統 37
3.4.1 Linux 檔案系統 37
3.4.2 遍歷目錄 40
3.5 檔案和目錄列表 42
3.5.1 基本列表功能 42
3.5.2 顯示長列表 44
3.5.3 過濾輸出列表 45
3.6 處理檔案 46
3.6.1 創建檔案 47
3.6.2 複製檔案 47
3.6.3 製表鍵自動補全 50
3.6.4 連結檔案 50
3.6.5 重命名檔案 52
3.6.6 刪除檔案 54
3.7 處理目錄 55
3.7.1 創建目錄 55
3.7.2 刪除目錄 55
3.8 查看檔案內容 58
3.8.1 查看檔案類型 58
3.8.2 查看整個檔案 59
3.8.3 查看部分檔案 61
3.9 小結 63
第4 章 更多的bash shell 命令 64
4.1 監測程式 64
4.1.1 探查進程 64
4.1.2 實時監測進程 70
4.1.3 結束進程 72
4.2 監測磁碟空間 73
4.2.1 掛載存儲媒體 73
4.2.2 使用df 命令 76
4.2.3 使用du 命令 77
4.3 處理數據檔案 78
4.3.1 排序數據 78
4.3.2 搜尋數據 81
4.3.3 壓縮數據 83
4.3.4 歸檔數據 84
4.4 小結 85
第5 章 理解shell 86
5.1 shell 的類型 86
5.2 shell 的父子關係 88
5.2.1 進程列表 91
5.2.2 別出心裁的子shell 用法 93
5.3 理解shell 的內建命令 96
5.3.1 外部命令 96
5.3.2 內建命令 97
5.4 小結 101
第6 章 使用Linux 環境變數 103
6.1 什麼是環境變數 103
6.1.1 全局環境變數 104
6.1.2 局部環境變數 105
6.2 設定用戶定義變數 106
6.2.1 設定局部用戶定義變數 106
6.2.2 設定全局環境變數 107
6.3 刪除環境變數 109
6.4 默認的shell 環境變數 110
6.5 設定PATH 環境變數 113
6.6 定位系統環境變數 114
6.6.1 登錄shell 115
6.6.2 互動式shell 進程 119
6.6.3 非互動式shell 120
6.6.4 環境變數持久化 121
6.7 數組變數 121
6.8 小結 122
第7 章 理解Linux 檔案許可權 124
7.1 Linux 的安全性 124
7.1.1 /etc/passwd 檔案 124
7.1.2 /etc/shadow 檔案 126
7.1.3 添加新用戶 127
7.1.4 刪除用戶 129
7.1.5 修改用戶 130
7.2 使用Linux 組 132
7.2.1 /etc/group 檔案 133
7.2.2 創建新組 133
7.2.3 修改組 134
7.3 理解檔案許可權 135
7.3.1 使用檔案許可權符 135
7.3.2 默認檔案許可權 136
7.4 改變安全性設定 138
7.4.1 改變許可權 138
7.4.2 改變所屬關係 139
7.5 已分享檔案 140
7.6 小結 142
第8 章 管理檔案系統 143
8.1 探索Linux 檔案系統 143
8.1.1 基本的Linux 檔案系統 143
8.1.2 日誌檔案系統 145
8.1.3 寫時複製檔案系統 147
8.2 操作檔案系統 147
8.2.1 創建分區 147
8.2.2 創建檔案系統 151
8.2.3 檔案系統的檢查與修復 153
8.3 邏輯卷管理 154
8.3.1 邏輯卷管理布局 154
8.3.2 Linux 中的LVM 155
8.3.3 使用Linux LVM 156
8.4 小結 162
第9 章 安裝軟體程式 163
9.1 包管理基礎 163
9.2 基於Debian 的系統 164
9.2.1 用aptitude 管理軟體包 164
9.2.2 用aptitude 安裝軟體包 166
9.2.3 用aptitude 更新軟體 168
9.2.4 用aptitude 卸載軟體 169
9.2.5 aptitude 倉庫 169
9.3 基於Red Hat 的系統 171
9.3.1 列出已安裝包 171
9.3.2 用yum 安裝軟體 173
9.3.3 用yum 更新軟體 174
9.3.4 用yum 卸載軟體 174
9.3.5 處理損壞的包依賴關係 175
9.3.6 yum 軟體倉庫 176
9.4 從源碼安裝 177
9.5 小結 180
第10 章 使用編輯器 181
10.1 vim 編輯器 181
10.1.1 檢查vim 軟體包 181
10.1.2 vim 基礎 183
10.1.3 編輯數據 185
10.1.4 複製和貼上 185
10.1.5 查找和替換 186
10.2 nano 編輯器 187
10.3 emacs 編輯器 188
10.3.1 檢查emacs 軟體包 189
10.3.2 在控制台中使用emacs 190
10.3.3 在GUI 環境中使用emacs 195
10.4 KDE 系編輯器 196
10.4.1 KWrite 編輯器 196
10.4.2 Kate 編輯器 200
10.5 GNOME 編輯器 202
10.5.1 啟動gedit 203
10.5.2 基本的gedit 功能 203
10.5.3 設定偏好設定 204
10.6 小結 206
第二部分 shell 腳本編程基礎
第11 章 構建基本腳本 210
11.1 使用多個命令 210
11.2 創建shell 腳本檔案 211
11.3 顯示訊息 212
11.4 使用變數 214
11.4.1 環境變數 214
11.4.2 用戶變數 215
11.4.3 命令替換 216
11.5 重定向輸入和輸出 218
11.5.1 輸出重定向 218
11.5.2 輸入重定向 219
11.6 管道 220
11.7 執行數學運算 222
11.7.1 expr 命令 223
11.7.2 使用方括弧 224
11.7.3 浮點解決方案 225
11.8 退出腳本 228
11.8.1 查看退出狀態碼 228
11.8.2 exit 命令 229
11.9 小結 231
第12 章 使用結構化命令 232
12.1 使用if-then 語句 232
12.2 if-then-else 語句 235
12.3 嵌套if 235
12.4 test 命令 238
12.4.1 數值比較 240
12.4.2 字元串比較 242
12.4.3 檔案比較 246
12.5 複合條件測試 254
12.6 if-then 的高級特性 255
12.6.1 使用雙括弧 255
12.6.2 使用雙方括弧 256
12.7 case 命令 257
12.8 小結 258
第13 章 更多的結構化命令 260
13.1 for 命令 260
13.1.1 讀取列表中的值 261
13.1.2 讀取列表中的複雜值 262
13.1.3 從變數讀取列表 263
13.1.4 從命令讀取值 264
13.1.5 更改欄位分隔設定 265
13.1.6 用通配符讀取目錄 266
13.2 C 語言風格的for 命令 268
13.2.1 C 語言的for 命令 268
13.2.2 使用多個變數 269
13.3 while 命令 270
13.3.1 while 的基本格式 270
13.3.2 使用多個測試命令 271
13.4 until 命令 272
13.5 嵌套循環 274
13.6 循環處理檔案數據 276
13.7 控制循環 277
13.7.1 break 命令 277
13.7.2 continue 命令 280
13.8 處理循環的輸出 282
13.9 實例 283
13.9.1 查找執行檔 284
13.9.2 創建多個用戶賬戶 285
13.10 小結 286
第14 章 處理用戶輸入 287
14.1 命令行參數 287
14.1.1 讀取參數 287
14.1.2 讀取腳本名 289
14.1.3 測試參數 291
14.2 特殊參數變數 292
14.2.1 參數統計 292
14.2.2 抓取所有的數據 294
14.3 移動變數 295
14.4 處理選項 296
14.4.1 查找選項 297
14.4.2 使用getopt 命令 300
14.4.3 使用更高級的getopts 302
14.5 將選項標準化 305
14.6 獲得用戶輸入 306
14.6.1 基本的讀取 306
14.6.2 逾時 307
14.6.3 隱藏方式讀取 308
14.6.4 從檔案中讀取 309
14.7 小結 309
第15 章 呈現數據 311
15.1 理解輸入和輸出 311
15.1.1 標準檔案描述符 311
15.1.2 重定向錯誤 313
15.2 在腳本中重定向輸出 315
15.2.1 臨時重定向 315
15.2.2 永久重定向 316
15.3 在腳本中重定向輸入 317
15.4 創建自己的重定向 317
15.4.1 創建輸出檔案描述符 318
15.4.2 重定向檔案描述符 318
15.4.3 創建輸入檔案描述符 319
15.4.4 創建讀寫檔案描述符 320
15.4.5 關閉檔案描述符 321
15.5 列出打開的檔案描述符 322
15.6 阻止命令輸出 323
15.7 創建臨時檔案 324
15.7.1 創建本地臨時檔案 324
15.7.2 在/tmp 目錄創建臨時檔案 325
15.7.3 創建臨時目錄 326
15.8 記錄訊息 327
15.9 實例 328
15.10 小結 330
第16 章 控制腳本 331
16.1 處理信號 331
16.1.1 重溫Linux 信號 331
16.1.2 生成信號 332
16.1.3 捕獲信號 334
16.1.4 捕獲腳本退出 335
16.1.5 修改或移除捕獲 335
16.2 以後台模式運行腳本 338
16.2.1 後台運行腳本 338
16.2.2 運行多個後台作業 340
16.3 在非控制台下運行腳本 341
16.4 作業控制 342
16.4.1 查看作業 342
16.4.2 重啟停止的作業 344
16.5 調整謙讓度 345
16.5.1 nice 命令 345
16.5.2 renice 命令 346
16.6 定時運行作業 346
16.6.1 用at 命令來計畫執行作業 347
16.6.2 安排需要定期執行的腳本 349
16.6.3 使用新shell 啟動腳本 352
16.7 小結 353