Linux Shell編程從入門到精通

Linux Shell編程從入門到精通

《Linux Shell編程從入門到精通》是人民郵電出版社2011年5月1日出版的圖書,作者是張昊。

內容簡介

《LinuxShell編程從入門到精通》由淺入深、循序漸進地詳細講解了LinuxShell編程的基本知識。這些基本知識包括Shell編程的基本知識、文本處理的工具和方法、正則表達式、Linux系統知識等。 《LinuxShell編程從入門到精通》旨在通過理清LinuxShell編程的脈絡,從基本概念著手,以豐富、實用的範例作為輔助,使讀者能夠深入淺出的學習LinuxShell編程。 《LinuxShell編程從入門到精通》的每一章節都配有綜合案例,這些綜合案例不僅可以使讀者複習前面所學的知識,還可以增加開發項目的經驗。這些案例實用性很強,許多代碼可以直接套用到Linux系統管理中。 《LinuxShell編程從入門到精通》配有全程錄像的視頻講解光碟,讀者可以將視頻和書結合起來學習,可以更快、更好地掌握LinuxShell編程技術。 《LinuxShell編程從入門到精通》適合於LinuxShell編程的初學者,有一定LinuxShell編程基礎,但還需要進一步提高的人閱讀。本書對於有一定編程經驗的程式設計師也有很好的參考價值。

圖書目錄

目 錄

第1章 第一個Shell程式 1

1.1 第一道菜 2

1.2 如何運行程式 2

1.2.1 選婿:位於第一行的#! 2

1.2.2 找茬:程式執行的差異 4

1.2.3 shell的命令種類 4

1.3 Linux Shell的變數 6

1.3.1 變數 6

1.3.2 用echo輸出變數 8

1.3.3 環境變數的相關操作 9

1.3.4 shell中一些常用環境變數 12

1.4 Linux Shell是解釋型語言 12

1.4.1 編譯型語言與解釋型語言 12

1.4.2 Linux Shell編程的優勢 13

1.5 小結 14

第2章 Shell編程基礎 15

2.1 向腳本傳遞參數 16

2.1.1 Shell腳本的參數 16

2.1.2 參數的用途 17

2.2 I/O重定向 20

2.2.1 標準輸入、標準輸出與標準錯誤 20

2.2.2 管道與重定向 22

2.2.3 檔案描述符 23

2.2.4 特殊檔案的妙用 24

2.3 基本文本檢索 28

2.4 UNIX/Linux系統的設計與shell 編程 31

2.4.1 一切皆檔案 31

2.4.2 UNIX編程的基本原則 34

2.5 小結 37

第3章 編程的基本元素 39

3.1 再識變數 40

3.1.1 用戶變數 41

3.1.2 位置變數 46

3.1.3 環境變數 48

3.1.4 啟動檔案 49

3.2 函式 51

3.2.1 函式定義 52

3.2.2 函式的參數和返回值 53

3.3 條件控制與流程控制 54

3.3.1 if/else語句 54

3.3.2 退出狀態 54

3.3.3 退出狀態與邏輯操作 56

3.3.4 條件測試 56

3.4 循環控制 61

3.4.1 for循環 61

3.4.2 while/until循環 62

3.4.3 跳出循環 63

3.4.4 循環實例 63

3.5 小結 65

第4章 正則表達式 66

4.1 什麼是正則表達式 67

4.1.1 正則表達式的廣泛套用 67

4.1.2 如何學習正則表達式 67

4.1.3 如何實踐正則表達式 68

4.2 正則基礎 69

4.2.1 元字元 69

4.2.2 單個字元 72

4.2.3 單個表達式匹配多個字元 73

4.2.4 文本匹配錨點 74

4.2.5 運算符優先權 74

4.2.6 更多差異 75

4.3 正則表達式的套用 76

4.3.1 擴展 76

4.3.2 案例研究:羅馬數字 77

4.3.3 案例研究:解析電話號碼 82

4.4 小結 86

第5章 基本文本處理 87

5.1 排序文本 88

5.1.1 sort命令的行排序 90

5.1.2 sort命令的欄位排序 92

5.1.3 sort小結 93

5.2 文本去重 94

5.3 統計文本行數、字數以及字 符數 96

5.4 列印和格式化輸出 97

5.4.1 使用pr列印檔案 97

5.4.2 使用fmt命令格式化文本 99

5.4.3 使用fold限制文本寬度 101

5.5 提取文本開頭和結尾 102

5.6 欄位處理 104

5.6.1 欄位的使用案例 104

5.6.2 使用cut取出欄位 105

5.6.3 使用join連線欄位 107

5.6.4 其他欄位處理方法 110

5.7 文本替換 110

5.7.1 使用tr替換字元 110

5.7.2 其他選擇 113

5.8 一個稍微複雜的例子 114

5.8.1 實例描述 114

5.8.2 取出記錄的ip欄位和id欄位 114

5.8.3 將記錄按照IP順序排序 115

5.8.4 使用uniq統計重複IP 115

5.8.5 根據訪問次數進行排序 116

5.8.6 提取出現次數最多的100條 116

5.9 小結 117

第6章 檔案和檔案系統 118

6.1 檔案 119

6.1.1 列出檔案 119

6.1.2 檔案的類型 122

6.1.3 檔案的許可權 123

6.1.4 檔案的修改時間 131

6.2 尋找檔案 133

6.2.1 find命令的參數 133

6.2.2 遍歷檔案 137

6.3 比較檔案 138

6.3.1 使用comm比較排序後檔案 138

6.3.2 使用diff比較檔案 139

6.3.3 其他文本比較方法 141

6.4 檔案系統 142

6.4.1 什麼是檔案系統 143

6.4.2 檔案系統與磁碟分區 143

6.4.3 Linux分區格式的選擇與安全性 145

6.4.4 檔案系統與目錄樹 147

6.4.5 檔案系統的創建與掛載 151

6.5 小結 154

第7章 流編輯 155

7.1 什麼是sed 156

7.1.1 挑選編輯器 156

7.1.2 sed的版本 156

7.2 sed示例 156

7.2.1 sed的工作方式 156

7.2.2 sed工作的地址範圍 158

7.2.3 規則表達式 159

7.3 更強大的sed功能 161

7.3.1 替換 162

7.3.2 地址範圍的迷惑 163

7.4 組合命令 164

7.4.1 組合多條命令 164

7.4.2 將多條命令套用到一個地址範圍 166

7.5 實際的例子 166

7.6 sed實踐 167

7.6.1 第一步 替換名字 168

7.6.2 第二步 刪除前3行 168

7.6.3 第三步 顯示5~10行 169

7.6.4 第四步 刪除包含Lane的行 169

7.6.5 第五步 顯示生日在November-December之間的行 170

7.6.6 第六步 把3個星號(***)添加到以Fred開頭的行 170

7.6.7 第七步 用JOSE HASRETIRED取代包含Jose的行 171

7.6.8 第八步 把Popeye的生日改成11/14/46 172

7.6.9 第九步 刪除所有空白行 173

7.6.10 第十步 腳本 174

7.7 小結 175

第8章 文本處理利器awk 176

8.1 來個案例 177

8.2 基本語法 178

8.2.1 多個欄位 178

8.2.2 使用其他欄位分隔設定 179

8.3 AWK語言特性 181

8.3.1 AWK代碼結構 181

8.3.2 變數與數組 184

8.3.3 算術運算和運算符 186

8.3.4 判斷與循環 188

8.3.5 多條記錄 192

8.4 用戶自定義函式 194

8.4.1 自定義函式格式 194

8.4.2 引用傳遞和值傳遞 196

8.4.3 遞歸調用 197

8.5 字元串與算術處理 199

8.5.1 格式化輸出 199

8.5.2 字元串函式 201

8.5.3 算術函式 206

8.6 案例分析 210

8.6.1 生成數據報表 210

8.6.2 多檔案聯合處理 212

8.6.3 檢驗passwd格式的正確性 214

8.6.4 sed/awk單行腳本 215

8.7 小結 222

第9章 進程 223

9.1 進程的含義與查看 224

9.1.1 理解進程 224

9.1.2 創建進程 224

9.1.3 查看進程 225

9.1.4 進程的屬性 229

9.2 進程管理 230

9.2.1 進程的狀態 230

9.2.2 shell命令的執行 232

9.2.3 進程與任務調度 233

9.3 信號 239

9.3.1 信號的基本概念 239

9.3.2 產生信號 242

9.4 Linux的第一個進程init 244

9.5 案例分析:Linux系統中管道的 實現 247

9.6 調度系統任務 249

9.6.1 任務調度的基本介紹 249

9.6.2 調度重複性系統任務(cron) 250

9.6.3 使用at命令 256

9.7 進程的視窗/proc 259

9.7.1 proc——虛擬檔案系統 260

9.7.2 查看/proc的檔案 260

9.7.3 從proc獲取信息 261

9.7.4 通過/proc與核心互動 263

9.8 Linux的執行緒簡介 264

9.8.1 Linux執行緒的定義 264

9.8.2 Pthread執行緒的使用場合 264

9.8.3 Linux進程和執行緒的發展 265

9.9 小結 265

第10章 超級工具 267

10.1 不同的shell 268

10.1.1 修改登錄shell和切換shell 268

10.1.2 選擇shell 270

10.2 SSH 273

10.2.1 SSH的安全驗證機制 273

10.2.2 使用SSH登錄遠程 主機 274

10.2.3 OpenSSH密鑰管理 276

10.2.4  配置SSH 281

10.2.5 使用SSH工具套裝拷貝檔案 282

10.3 screen工具 283

10.3.1 任務退出的元兇:SIGHUP信號 284

10.3.2 開始使用screen 285

10.3.3 screen常用選項 287

10.3.4 實例:ssh+screen管理遠程會話 289

10.4 文本編輯工具Vim 289

10.4.1 為什麼選擇Vim 290

10.4.2 從何處獲取Vim 290

10.4.3 Vim的工作模式 292

10.4.4 首次接觸:step by step 293

10.4.5 滑鼠的移動 294

10.4.6 基本編輯指令 295

10.4.7 複製(yank) 299

10.4.8 搜尋、替換 301

10.5 小結 303

第11章 Linux Shell編程實戰 304

11.1 日誌清理 305

11.1.1 程式行為介紹 305

11.1.2 準備函式 305

11.1.3 日誌備份函式 309

11.1.4 定時運行 310

11.1.5 代碼回顧 311

11.2 系統監控 312

11.2.1 記憶體監控函式 313

11.2.2 硬碟空間監控函式 314

11.2.3 CPU占用監控函式 315

11.2.4 獲取最忙碌的進程信息 319

11.2.5 結合到一起 320

11.2.6 代碼回顧 320

11.3 小結 322

相關詞條

相關搜尋

熱門詞條

聯絡我們