Shell從入門到精通(第2版)

張春曉

  • 出版商: 清華大學
  • 出版日期: 2024-11-01
  • 定價: $599
  • 售價: 8.5$509
  • 語言: 簡體中文
  • ISBN: 7302675163
  • ISBN-13: 9787302675167
  • 下單後立即進貨 (約4週~6週)

  • Shell從入門到精通(第2版)-preview-1
  • Shell從入門到精通(第2版)-preview-2
  • Shell從入門到精通(第2版)-preview-3
Shell從入門到精通(第2版)-preview-1

相關主題

商品描述

"《Shell從入門到精通(第2版)》是獲得大量讀者好評的“Linux典藏大系”中的經典暢銷書《Shell從入門到精通》的第2版。本書結合大量實例,詳細介紹系統管理員和Linux程序員解決實際問題的得力工具——Bash Shell的用法,並對一些易混淆的內容進行重點提示和講解。本書提供442分鐘教學視頻、程序源代碼、高清思維導圖、教學PPT和習題參考答案等超值配套資源,幫助讀者高效、直觀地學習。 《Shell從入門到精通(第2版)》共15章,分為3篇。第1篇認識Shell編程,主要介紹Shell編程的入門知識,以及Shell編程環境的搭建;第2篇Shell編程核心技術,主要介紹Shell變量和引用、條件測試和判斷語句、循環結構、函數、數組、正則表達式、文本處理、流編輯器、文本處理利器awk命令、文件操作、子Shell與進程處理等;第3篇Shell編程實戰,主要介紹Shell腳本調試技術和2個綜合案例的實現。 《Shell從入門到精通(第2版)》內容豐富,實例典型,易學易用,可操作性強,非常適合Bash Shell入門與進階人員閱讀,也適合從事Linux系統管理與開發的相關人員閱讀,還可作為高等院校相關專業的教材及社會培訓機構的培訓教材。 "

目錄大綱

第1篇  認識Shell編程

第1章  Shell入門基礎 2

1.1  為什麽學習和使用Shell編程 2

1.2  Shell簡介 2

1.2.1  Shell的起源 3

1.2.2  Shell的功能 4

1.2.3  Shell的分類 4

1.3  Shell的特性 5

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程序 10

1.5.1  Shell腳本的基本元素 10

1.5.2  指定命令解讀器 11

1.5.3  Shell腳本的註釋和風格 12

1.5.4  如何執行Shell程序 13

1.5.5  Shell程序的退出狀態 13

1.6  小結 15

1.7  習題 15

第2章  Shell編程環境的搭建 17

2.1  在不同的操作系統上搭建Shell編程環境 17

2.1.1  在Windows上搭建Shell編程環境 17

2.1.2  在Linux上搭建Shell編程環境 20

2.1.3  在FreeBSD上搭建Shell編程環境 22

2.2  編輯器的選擇 23

2.2.1  圖形化編輯器 24

2.2.2  vi(vim)編輯器 24

2.3  系統環境的搭建 30

2.3.1  Shell配置文件 30

2.3.2  命令別名 33

2.4  小結 34

2.5  習題 34

第2篇  Shell編程核心技術

第3章  變量和引用 36

3.1  深入理解變量 36

3.1.1  什麽是變量 36

3.1.2  變量的命名 36

3.1.3  變量的類型 37

3.1.4  變量的定義 39

3.1.5  變量和引號 42

3.1.6  變量的作用域 42

3.1.7  系統變量 45

3.1.8  環境變量 47

3.2  變量的賦值和清空 48

3.2.1  變量的賦值 49

3.2.2  引用變量的值 49

3.2.3  清除變量 50

3.3  引用和替換 51

3.3.1  引用 51

3.3.2  全引用 52

3.3.3  部分引用 52

3.3.4  命令替換 53

3.3.5  轉義 54

3.4  小結 54

3.5  習題 54

第4章  條件測試和判斷語句 56

4.1  條件測試 56

4.1.1  條件測試的基本語法 56

4.1.2  字符串測試 57

4.1.3  整數測試 60

4.1.4  文件測試 62

4.1.5  邏輯操作符 65

4.2  條件判斷語句 66

4.2.1  使用簡單的if語句進行條件判斷 66

4.2.2  使用if…else語句進行流程控制 69

4.2.3  使用if…elif語句進行多條件判斷 71

4.2.4  使用exit語句退出程序 72

4.3  多條件判斷語句case 74

4.3.1  case的基本語法 74

4.3.2  利用case語句處理選項參數 75

4.3.3  利用case語句處理用戶的輸入 77

4.4  運算符 78

4.4.1  算術運算符 78

4.4.2  位運算符 82

4.4.3  自增或自減運算符 84

4.4.4  數字常量的進制 85

4.5  小結 86

4.6  習題 86

第5章  循環結構 88

5.1  步進循環語句for 88

5.1.1  帶列表的for循環語句 88

5.1.2  不帶列表的for循環語句 93

5.1.3  類C風格的for循環語句 93

5.1.4  使用for循環語句處理數組 95

5.2  until循環語句 96

5.2.1  until語句的基本語法 96

5.2.2  利用until語句批量增加用戶 97

5.3  while循環語句 99

5.3.1  while語句的基本語法 99

5.3.2  通過計數器控制while循環結構 99

5.3.3  通過結束標記控制while循環結構 100

5.3.4  理解while語句與until語句的區別 101

5.4  嵌套循環 102

5.5  利用break和continue語句控制循環 103

5.5.1  利用break語句控制循環 103

5.5.2  利用continue語句控制循環 105

5.5.3  分析break語句和continue語句的區別 106

5.6  小結 109

5.7  習題 109

第6章  函數 111

6.1  函數的基礎知識 111

6.1.1  什麽是函數 111

6.1.2  函數的定義 112

6.1.3  函數的調用 113

6.1.4  函數鏈接 114

6.1.5  函數的返回值 115

6.1.6  函數和別名 117

6.1.7  全局變量和局部變量 118

6.2  函數的參數 120

6.2.1  包含參數的函數的調用方法 120

6.2.2  獲取函數參數的個數 121

6.2.3  通過位置變量接收參數值 122

6.2.4  移動位置參數 122

6.2.5  通過getopts接收函數的參數 123

6.2.6  傳遞間接參數 124

6.2.7  通過全局變量傳遞數據 126

6.2.8  傳遞數組參數 126

6.3  函數庫文件 128

6.3.1  函數庫文件的定義 128

6.3.2  函數庫文件的調用 129

6.4  遞歸函數 130

6.5  小結 132

6.6  習題 133

第7章  數組 134

7.1  定義數組 134

7.1.1  通過指定元素值定義數組 134

7.1.2  通過declare語句定義數組 135

7.1.3  通過元素值集合定義數組 136

7.1.4  通過鍵值對定義數組 137

7.1.5  數組和普通變量 138

7.2  數組的賦值 139

7.2.1  按索引為元素賦值 139

7.2.2  通過集合為數組賦值 140

7.2.3  在數組末尾追加新元素 141

7.2.4  通過循環為數組元素賦值 142

7.3  訪問數組 142

7.3.1  訪問第1個數組元素 142

7.3.2  通過下標訪問數組元素 143

7.3.3  計算數組的長度 143

7.3.4  通過循環遍歷數組元素 145

7.3.5  引用所有的數組元素 145

7.3.6  以切片方式獲取部分數組元素 146

7.3.7  數組元素的替換 148

7.4  刪除數組 149

7.4.1  刪除指定的數組元素 149

7.4.2  刪除整個數組 150

7.5  數組的其他操作 151

7.5.1  復制數組 151

7.5.2  連接數組 151

7.5.3  將文件內容加載到數組中 152

7.6  小結 153

7.7  習題 153

第8章  正則表達式 154

8.1  正則表達式簡介 154

8.1.1  為什麽使用正則表達式 154

8.1.2  如何學習正則表達式 155

8.1.3  如何實踐正則表達式 156

8.2  正則表達式基礎 156

8.2.1  正則表達式的原理 156

8.2.2  標準正則表達式 157

8.2.3  擴展正則表達式 161

8.2.4  Perl正則表達式 163

8.2.5  正則表達式的字符集 164

8.3  正則表達式的應用 165

8.3.1  匹配單個字符 166

8.3.2  匹配多個字符 168

8.3.3  匹配字符串的開頭或者結尾 170

8.3.4  運算符的優先級 171

8.3.5  子表達式 172

8.3.6  通配符 174

8.4  grep命令 175

8.4.1  grep命令的基本語法 175

8.4.2  grep命令族簡介 176

8.5  小結 177

8.6  習題 177

第9章  文本處理 178

9.1  使用echo命令輸出文本 178

9.1.1  顯示普通字符串 178

9.1.2  顯示轉義字符 179

9.1.3  顯示變量 181

9.1.4  換行和不換行 182

9.1.5  顯示命令的執行結果 183

9.1.6  echo命令的執行結果重定向 183

9.2  文本格式化的輸出 184

9.2.1  使用UNIX製表符 184

9.2.2  使用fold命令格式化行 185

9.2.3  使用fmt命令格式化段落 187

9.2.4  使用rev命令反轉字符順序 189

9.2.5  使用pr命令格式化文本頁 190

9.3  使用sort命令對文本進行排序 193

9.3.1  sort命令的基本用法 193

9.3.2  使用單個關鍵字進行排序 194

9.3.3  根據指定的列進行排序 198

9.3.4  根據關鍵字進行降序排序 198

9.3.5  數值列的排序 200

9.3.6  自定義列分隔符 201

9.3.7  刪除重復的行 202

9.3.8  根據多個關鍵字進行排序 202

9.3.9  使用sort命令合並文件 204

9.4  文本的統計 205

9.4.1  輸出包含行號的文本行 205

9.4.2  統計行數 207

9.4.3  統計單詞數和字符數 209

9.5  使用cut命令選取文本列 209

9.5.1  cut命令及其語法 210

9.5.2  選擇指定的文本列 211

9.5.3  選擇指定數量的字符 212

9.5.4  排除不包含列分隔符的行 213

9.6  使用paste命令拼接文本列 214

9.6.1  paste命令及其語法 214

9.6.2  自定義列分隔符 216

9.6.3  拼接指定的文本列 216

9.7  使用join命令連接文本列 217

9.7.1  join命令及其語法 217

9.7.2  指定連接關鍵字列 219

9.7.3  內連接文本文件 220

9.7.4  左連接文本文件 220

9.7.5  右連接文本文件 221

9.7.6  全連接文本文件 222

9.7.7  自定義輸出列 222

9.8  使用tr命令替換文件內容 223

9.8.1  tr命令及其語法 223

9.8.2  去除重復出現的字符 224

9.8.3  刪除空行 225

9.8.4  大小寫轉換 225

9.8.5  刪除指定的字符 226

9.9  小結 227

9.10  習題 227

第10章  流編輯器 229

10.1  sed命令簡介 229

10.1.1  sed命令的基本語法 229

10.1.2  sed命令的工作方式 231

10.1.3  使用行號定位文本行 231

10.1.4  使用正則表達式定位文本行 232

10.2  sed命令的常用操作 233

10.2.1  sed命令的基本語法 233

10.2.2  選擇文本 234

10.2.3  替換文本 236

10.2.4  刪除文本 239

10.2.5  追加文本 242

10.2.6  插入文本 243

10.3  組合命令 243

10.3.1  使用-e選項執行多個子命令 244

10.3.2  使用分號執行多個子命令 244

10.3.3  對一個地址使用多個子命令 245

10.3.4  sed腳本文件 246

10.4  小結 248

10.5  習題 249

第11章  文本處理利器awk命令 250

11.1  awk命令簡介 250

11.1.1  awk命令的功能 250

11.1.2  awk命令的基本語法 251

11.1.3  awk命令的工作流程 252

11.1.4  執行awk命令的幾種方式 252

11.2  awk命令的模式匹配 254

11.2.1  關系表達式 254

11.2.2  正則表達式 255

11.2.3  混合模式 256

11.2.4  區間模式 256

11.2.5  BEGIN模式 257

11.2.6  END模式 258

11.3  變量 259

11.3.1  變量的定義和引用 259

11.3.2  系統內置變量 260

11.3.3  記錄分隔符和字段分隔符 260

11.3.4  記錄和字段的引用 263

11.4  運算符和表達式 264

11.4.1  算術運算符 264

11.4.2  賦值運算符 265

11.4.3  條件運算符 266

11.4.4  邏輯運算符 266

11.4.5  關系運算符 267

11.4.6  其他運算符 268

11.5  函數 268

11.5.1  字符串函數 268

11.5.2  算術函數 272

11.6  數組 273

11.6.1  數組的定義和賦值 273

11.6.2  遍歷數組 274

11.7  流程控制 276

11.7.1  if語句 276

11.7.2  while語句 277

11.7.3  do…while語句 278

11.7.4  for語句 279

11.7.5  break語句 280

11.7.6  continue語句 281

11.7.7  next語句 282

11.7.8  exit語句 283

11.8  awk命令格式化的輸出 283

11.8.1  基本的print語句 283

11.8.2  格式化輸出printf()函數 283

11.8.3  使用sprintf()函數生成格式化字符串 284

11.9  awk命令與Shell的交互 285

11.9.1  通過管道實現與Shell的交換 285

11.9.2  通過system()函數實現與Shell的交互 286

11.10  小結 287

11.11  習題 287

第12章  文件操作 288

12.1  文件的基礎知識 288

12.1.1  列出文件 288

12.1.2  文件的類型 289

12.1.3  文件的權限 292

12.2  查找文件 293

12.2.1  find命令及其語法 293

12.2.2  find命令——路徑 294

12.2.3  find命令——測試 295

12.2.4  find命令——使用!運算符對測試求反 298

12.2.5  find命令——處理文件權限錯誤信息 298

12.2.6  find命令——動作 299

12.3  比較文件 300

12.3.1  使用comm比較文件 301

12.3.2  使用diff比較文件 304

12.4  文件描述符 307

12.4.1  什麽是文件描述符 307

12.4.2  標準輸入、標準輸出和標準錯誤 308

12.5  重定向 309

12.5.1  輸出重定向(覆蓋) 309

12.5.2  輸出重定向(追加) 311

12.5.3  輸入重定向 311

12.5.4  當前文檔 312

12.5.5  重定向兩個文件描述符 313

12.5.6  使用exec命令分配文件描述符 313

12.6  小結 315

12.7  習題 315

第13章  子Shell與進程處理 317

13.1  子Shell 317

13.1.1  什麽是子Shell 317

13.1.2  內部命令、保留字和外部命令 318

13.1.3  在子Shell中執行命令 321

13.1.4  把子Shell中的變量值傳回父Shell 325

13.2  進程處理 327

13.2.1  什麽是進程 327

13.2.2  通過腳本監控進程 328

13.2.3  作業控制 329

13.2.4  信號與trap命令 332

13.3  小結 334

13.4  習題 334

第3篇  Shell編程實戰

第14章  Shell腳本調試技術 336

14.1  Shell腳本中的常見錯誤 336

14.1.1  常見的語法錯誤 336

14.1.2  常見的邏輯錯誤 339

14.2  Shell腳本調試技術 340

14.2.1  使用echo命令調試腳本 340

14.2.2  使用trap命令調試Shell腳本 341

14.2.3  使用tee命令調試Shell腳本 343

14.2.4  使用調試鉤子調試Shell腳本 344

14.3  小結 346

14.4  習題 346

第15章  利用Shell腳本解決實際問題 347

15.1  編寫系統服務腳本 347

15.1.1  系統的啟動過程 347

15.1.2  運行級別 348

15.1.3  服務腳本的基本語法 349

15.1.4  編寫MySQL服務腳本 352

15.2  通過腳本管理Apache服務器日誌 358

15.2.1  Apache日誌簡介 359

15.2.2  歸檔文件名生成函數 360

15.2.3  過期日誌歸檔函數 361

15.2.4  過期日誌刪除函數 362

15.2.5  日誌歸檔主程序 362

15.2.6  定時運行日誌歸檔腳本 363

15.3  小結 367

15.4  習題 367