圖書簡介
內容簡介
《Shell從入門到精通》結構清晰,易教易學,實例豐富,可操作性強,對易混淆和實用性強的內容進行了重點提示和講解。因此,《Shell從入門到精通》非常適合Linux系統管理和開發的相關人員閱讀,也可以作為高等學校教師和相關專業學生的教材,又可以作為各類培訓班的培訓教材。
圖書信息
Shell從入門到精通
Shell學習終極實戰秘笈,ChinaUnix技術社區鼎力推薦;結合近300個實例和2個綜合案例,全方位介紹Shell編程15小時配套教學視頻 + 35小時Linux入門視頻 + 11小時Linux指令視頻本書
圖書目錄
第1篇 認識Shell編程
第1章 Shell入門基礎(教學視頻:66分鐘)2
1.1 為什麼學習和使用Shell編程2
1.2 什麼是Shell2
1.2.1 Shell的起源3
1.2.2 Shell的功能4
1.2.3 Shell的分類4
1.3 作為程式設計語言的Shell5
1.3.1 互動式程式5
1.3.2 創建腳本6
1.3.3 把腳本設定為可執行6
1.4 向腳本傳遞參數7
1.4.1 Shell腳本的參數8
1.4.2 參數擴展9
1.5 第一個Shell程式:Hello,Bash Shell!10
1.5.1 Shell腳本的基本元素10
1.5.2 指定命令解讀器11
1.5.3 Shell腳本中的注釋和風格12
1.5.4 如何執行Shell程式13
1.5.5 Shell程式的退出狀態14
1.6 小結15
第2章 Shell編程環境的搭建(教學視頻:49分鐘)16
2.1 在不同的作業系統上搭建Shell編程環境16
2.1.1 在Windows上搭建Shell編程環境16
2.1.2 在Linux上搭建Shell編程環境20
2.1.3 在FreeBSD上搭建Shell編程環境22
2.2 編輯器的選擇23
2.2.1 圖形化編輯器23
2.2.2 vi(vim)編輯器29
2.3 系統環境的搭建36
2.3.1 Shell配置檔案36
2.3.2 命令別名39
2.4 小結39
第2篇 Shell編程基礎
第3章 變數和引用(教學視頻:62分鐘)42
3.1 深入認識變數42
3.1.1 什麼是變數42
3.1.2 變數的命名42
3.1.3 變數的類型43
3.1.4 變數的定義45
3.1.5 變數和引號48
3.1.6 變數的作用域48
3.1.7 系統變數51
3.1.8 環境變數53
3.2 變數賦值和清空55
3.2.1 變數賦值55
3.2.2 引用變數的值55
3.2.3 清除變數57
3.3 引用和替換57
3.3.1 引用58
3.3.2 全引用58
3.3.3 部分引用59
3.3.4 命令替換59
3.3.5 轉義60
3.4 小結60
第4章 條件測試和判斷語句(教學視頻:77分鐘)61
4.1 條件測試61
4.1.1 條件測試的基本語法61
4.1.2 字元串測試62
4.1.3 整數測試65
4.1.4 檔案測試67
4.1.5 邏輯操作符70
4.2 條件判斷語句71
4.2.1 使用簡單的if語句進行條件判斷72
4.2.2 使用if else語句進行流程控制74
4.2.3 使用if elif語句進行多條件判斷76
4.2.4 使用exit語句退出程式78
4.3 多條件判斷語句case80
4.3.1 多條件判斷語句case的基本語法80
4.3.2 利用case語句處理選項參數81
4.3.3 利用case語句處理用戶輸入82
4.4 運算符83
4.4.1 算術運算符83
4.4.2 位運算符87
4.4.3 自增/自減運算符89
4.4.4 數字常量的進制91
4.5 小結92
第5章 循環結構(教學視頻:61分鐘)93
5.1 步進循環語句for93
5.1.1 帶列表的for循環語句93
5.1.2 不帶列表的for循環語句98
5.1.3 類C風格的for循環語句99
5.1.4 使用for循環語句處理數組100
5.2 until循環語句101
5.2.1 until語句的基本語法101
5.2.2 利用until語句批量增加用戶102
5.3 while循環語句104
5.3.1 while語句的基本語法104
5.3.2 通過計數器控制while循環結構104
5.3.3 通過結束標記控制while循環結構105
5.3.4 理解while語句與until語句的區別106
5.4 嵌套循環107
5.5 利用break和continue語句控制循環108
5.5.1 利用break語句控制循環108
5.5.2 利用continue語句控制循環110
5.5.3 分析break語句和continue語句的區別111
5.6 小結114
第6章 函式(教學視頻:60分鐘)115
6.1 函式115
6.1.1 什麼是函式115
6.1.2 函式的定義116
6.1.3 函式的調用117
6.1.4 函式連結118
6.1.5 函式的返回值119
6.1.6 函式和別名121
6.1.7 再議全局變數和局部變數123
6.2 函式參數125
6.2.1 含有參數的函式的調用方法125
6.2.2 獲取函式參數的個數125
6.2.3 通過位置變數接收參數值126
6.2.4 移動位置參數127
6.2.5 通過getopts接收函式參數128
6.2.6 間接參數傳遞129
6.2.7 通過全局變數傳遞數據130
6.2.8 傳遞數組參數131
6.3 函式館檔案132
6.3.1 函式館檔案的定義132
6.3.2 函式館檔案的調用133
6.4 遞歸函式134
6.5 小結137
第7章 數組(教學視頻:52分鐘)138
7.1 定義數組138
7.1.1 通過指定元素值來定義數組138
7.1.2 通過declare語句定義數組139
7.1.3 通過元素值集合定義數組140
7.1.4 通過鍵值對定義數組141
7.1.5 數組和普通變數142
7.2 數組的賦值143
7.2.1 按索引為元素賦值143
7.2.2 通過集合為數組賦值144
7.2.3 在數組末尾追加新元素145
7.2.4 通過循環為數組元素賦值146
7.3 訪問數組146
7.3.1 訪問第1個數組元素146
7.3.2 通過下標訪問數組元素147
7.3.3 計算數組的長度147
7.3.4 通過循環遍歷數組元素149
7.3.5 引用所有的數組元素150
7.3.6 以切片方式獲取部分數組元素150
7.3.7 數組元素的替換153
7.4 刪除數組154
7.4.1 刪除指定數組元素154
7.4.2 刪除整個數組155
7.5 數組的其他操作155
7.5.1 複製數組155
7.5.2 連線數組156
7.5.3 載入檔案內容到數組157
7.6 小結157
第8章 正則表達式(教學視頻:57分鐘)158
8.1 什麼是正則表達式158
8.1.1 為什麼使用正則表達式158
8.1.2 如何學習正則表達式159
8.1.3 如何實踐正則表達式160
8.2 正則表達式基礎160
8.2.1 正則表達式的原理160
8.2.2 基本正則表達式161
8.2.3 擴展正則表達式166
8.2.4 Perl正則表達式168
8.2.5 正則表達式字元集169
8.3 正則表達式套用170
8.3.1 匹配單個字元170
8.3.2 匹配多個字元173
8.3.3 匹配字元串的開頭或者結尾175
8.3.4 運算符優先權176
8.3.5 子表達式177
8.3.6 通配符180
8.4 grep命令181
8.4.1 grep命令的基本語法181
8.4.2 grep命令族簡介182
8.5 小結182
第9章 基本文本處理(教學視頻:100分鐘)183
9.1 使用echo命令輸出文本183
9.1.1 顯示普通字元串183
9.1.2 顯示轉義字元184
9.1.3 顯示變數186
9.1.4 換行和不換行187
9.1.5 顯示命令執行結果188
9.1.6 echo命令執行結果的重定向188
9.2 文本的格式化輸出189
9.2.1 使用UNIX制表符189
9.2.2 使用fold命令格式化行190
9.2.3 使用fmt命令格式化段落192
9.2.4 使用rev命令反轉字元順序194
9.2.5 使用pr命令格式化文本頁195
9.3 使用sort命令對文本排序198
9.3.1 sort命令的基本用法198
9.3.2 使用單個關鍵字排序200
9.3.3 根據指定的列排序203
9.3.4 根據關鍵字降序排序204
9.3.5 數值列的排序205
9.3.6 自定義列分隔設定206
9.3.7 刪除重複的行207
9.3.8 根據多個關鍵字排序208
9.3.9 使用sort命令合併檔案209
9.4 文本的統計211
9.4.1 輸出含有行號的文本行211
9.4.2 統計行數213
9.4.3 統計單詞數和字元數215
9.5 使用cut命令選取文本列215
9.5.1 cut命令及其語法216
9.5.2 選擇指定的文本列217
9.5.3 選擇指定數量的字元218
9.5.4 排除不包含列分隔設定的行219
9.6 使用paste命令拼接文本列220
9.6.1 paste命令及其語法220
9.6.2 自定義列分隔設定222
9.6.3 拼接指定的文本列222
9.7 使用join命令聯接文本列223
9.7.1 join命令及其語法224
9.7.2 指定聯接關鍵字列225
9.7.3 內聯接文本檔案226
9.7.4 左聯接文本檔案226
9.7.5 右聯接文本檔案227
9.7.6 全聯接文本檔案228
9.7.7 自定義輸出列229
9.8 使用tr命令替換檔案內容229
9.8.1 tr命令及其語法229
9.8.2 去除重複出現的字元230
9.8.3 刪除空行231
9.8.4 大小寫轉換232
9.8.5 刪除指定字元232
9.9 小結234
第10章 流編輯(教學視頻:52分鐘)235
10.1 sed命令及其語法235
10.1.1 sed命令以及語法235
10.1.2 sed命令的工作方式237
10.1.3 使用行號定位文本行237
10.1.4 使用正則表達式定位文本行238
10.2 sed命令的常用操作239
10.2.1 sed編輯命令基本語法239
10.2.2 選擇文本240
10.2.3 替換文本242
10.2.4 刪除文本246
10.2.5 追加文本248
10.2.6 插入文本249
10.3 組合命令250
10.3.1 使用—e選項執行多個子命令250
10.3.2 使用分號執行多個子命令251
10.3.3 對一個地址使用多個子命令251
10.3.4 sed腳本檔案253
10.4 小結255
第11章 文本處理利器awk命令(教學視頻:78分鐘)256
11.1 awk入門256
11.1.1 awk的功能256
11.1.2 awk命令的基本語法257
11.1.3 awk的工作流程258
11.1.4 執行awk程式的幾種方式258
11.2 awk的模式匹配260
11.2.1 關係表達式260
11.2.2 正則表達式261
11.2.3 混合模式262
11.2.4 區間模式262
11.2.5 BEGIN模式263
11.2.6 END模式264
11.3 變數265
11.3.1 變數的定義和引用265
11.3.2 系統內置變數266
11.3.3 記錄分隔設定和欄位分隔設定267
11.3.4 記錄和欄位的引用269
11.4 運算符和表達式270
11.4.1 算術運算符270
11.4.2 賦值運算符271
11.4.3 條件運算符272
11.4.4 邏輯運算符273
11.4.5 關係運算符274
11.4.6 其他運算符275
11.5 函式275
11.5.1 字元串函式275
11.5.2 算術函式279
11.6 數組279
11.6.1 數組的定義和賦值279
11.6.2 遍歷數組281
11.7 流程控制283
11.7.1 if語句283
11.7.2 while語句284
11.7.3 do...while語句285
11.7.4 for語句286
11.7.5 break語句287
11.7.6 continue語句288
11.7.7 next語句288
11.7.8 exit語句289
11.8 awk程式的格式化輸出290
11.8.1 基本print語句290
11.8.2 格式化輸出printf語句290
11.8.3 使用sprintf函式生成格式化字元串291
11.9 awk的程式與Shell的互動292
11.9.1 通過管道實現與Shell的交換292
11.9.2 通過system函式實現與Shell的互動293
11.10 小結293
第12章 檔案的操作(教學視頻:74分鐘)294
12.1 檔案294
12.1.1 列出檔案294
12.1.2 檔案類型296
12.1.3 檔案的許可權298
12.2 查找檔案299
12.2.1 find命令以及語法299
12.2.2 find命令:路徑300
12.2.3 find命令:測試301
12.2.4 find命令:使用!運算符對測試求反304
12.2.5 find命令:處理檔案許可權錯誤信息305
12.2.6 find命令:動作305
12.3 比較檔案307
12.3.1 使用comm比較檔案307
12.3.2 使用diff比較檔案310
12.4 檔案描述符314
12.4.1 什麼是檔案描述符314
12.4.2 標準輸入、標準輸出和標準錯誤314
12.5 重定向315
12.5.1 輸出重定向(覆蓋)315
12.5.2 輸出重定向(追加)317
12.5.3 輸入重定向318
12.5.4 當前文檔319
12.5.5 重定向兩個檔案描述符319
12.5.6 使用exec命令分配檔案描述符320
12.6 小結322
第13章 子Shell與進程處理(教學視頻:49分鐘)323
13.1 子Shell323
13.1.1 什麼是子Shell323
13.1.2 內部命令、保留字和外部命令324
13.1.3 在子Shell中執行命令327
13.1.4 把子Shell中的變數值傳回父Shell331
13.2 進程處理333
13.2.1 什麼是進程334
13.2.2 通過腳本監控進程334
13.2.3 作業控制335
13.2.4 信號與trap命令338
13.3 小結340
第3篇 Shell編程實戰
第14章 Shell腳本調試技術(教學視頻:33分鐘)342
14.1 Shell腳本中的常見錯誤342
14.1.1 常見語法錯誤342
14.1.2 常見邏輯錯誤345
14.2 Shell腳本調試技術346
14.2.1 使用echo命令調試腳本346
14.2.2 使用trap命令調試Shell腳本347
14.2.3 使用tee命令調試Shell腳本349
14.2.4 使用調試鉤子調試Shell腳本351
14.3 小結352
第15章 利用Shell腳本解決實際問題(教學視頻:33分鐘)353
15.1 編寫系統服務腳本353
15.1.1 系統啟動過程353
15.1.2 運行級別354
15.1.3 服務腳本的基本語法355
15.1.4 編寫MySQL服務腳本357
15.2 通過腳本管理Apache伺服器日誌364
15.2.1 Apache以及日誌檔案簡介364
15.2.2 備份歸檔檔案名稱生成函式365
15.2.3 過期日誌備份歸檔函式366
15.2.4 過期日誌刪除函式368
15.2.5 日誌歸檔主程式368
15.2.6 定時運行日誌歸檔腳本369
15.3 小結373
作者簡介
張春曉,畢業於廣州暨南大學,計算機軟體與理論碩士。現任職於暨南大學,長期從事UNIX及Linux系統維護,已達10年之久。作者熱衷於UNIX的嚴謹與簡潔,又痴迷於Linux的自由與開放,整日與UNIX及Linux為伴,從中獲益匪淺。