2015年7月8日 星期三

新書推薦-「晉身Linux高手的最後一哩路:精熟Shell程式設計」書評

 

新書推薦-「晉身Linux高手的最後一哩路:精熟Shell程式設計」書評

 

詳細介紹(點我)

 

 

 閱讀心得,心得感想,書評


內容簡介




  在Linux 系統中,Shell 是使用者與系統核心之間進行互動的介面,是整個Linux 系統中非常重要的組成部分。Shell 指令稿程式設計成為一個優秀的系統管理員和Linux開發者必須掌握的技術之一。



  本書由具有十幾年實作經驗的最前線工程師撰寫,以實用性為主旨。從最基本的Shell 程式設計環境的架設和變數開始,一直到 Shell 指令稿的偵錯技術,由淺入深,系統地介紹了Shell 程式設計各個方面的基礎知識。最後透過2 個實際的綜合實例,向讀者介紹如何使用Shell 指令稿來解決實際問題。



  



 

目錄




第1 篇 認識Shell 程式設計

01 Shell 入門基礎

1.1 為什麼學習和使用Shell 程式設計

1.2 什麼是Shell  

1.2.1 Shell 的起源  

1.2.2 Shell 的功能  

1.2.3 Shell 的分類  

1.3 作為程式語言的Shell  

1.3.1 互動式程式

1.3.2 建立指令稿

1.3.3 把指令稿設定為可執行  

1.4 向指令稿傳遞參數

1.4.1 Shell 指令稿的參數

1.4.2 參數擴充

1.5 第一個Shell 程式:Hello,Bash Shell!

1.5.1 Shell 指令稿的基本元素

1.5.2 指定指令解讀器

1.5.3 Shell 指令稿中的註釋和風格

1.5.4 如何執行Shell 程式  

1.5.5 Shell 程式的退出狀態

1.6 小結

02 Shell 程式設計環境的架設

2.1 在不同的作業系統上架設Shell 程式設計環境  

2.1.1 在Windows 上架設Shell 程式設計環境

2.1.2 在Linux 上架設Shell 程式設計環境

2.1.3 在FreeBSD 上架設Shell 程式設計環境  

2.2 編輯器的選擇

2.2.1 圖形化編輯器  

2.2.2 vi(vim)編輯器  

2.3 系統環境的架設  

2.3.1 Shell 設定檔

2.3.2 指令別名 -33

2.4 小結  



第2 篇 Shell 程式設計基礎

03 變數和參考

3.1 深入認識變數  

3.1.1 什麼是變數

3.1.2 變數的命名

3.1.3 變數的類型

3.1.4 變數的定義

3.1.5 變數和引號

3.1.6 變數的作用域  

3.1.7 系統變數  

3.1.8 環境變數

3.2 變數設定值和清空  

3.2.1 變數設定值

3.2.2 參考變數的值  

3.2.3 清除變數  

3.3 參考和取代  

3.3.1 參考

3.3.2 全參考  

3.3.3 部分參考  

3.3.4 指令取代  

3.3.5 逸出  

3.4 小結  

04 條件測試和判斷敘述

4.1 條件測試  

4.1.1 條件測試的基本語法  

4.1.2 字串測試  

4.1.3 整數測試  

4.1.4 檔案測試  

4.1.5 邏輯運算符號  

4.2 條件判斷敘述  

4.2.1 使用簡單的if 敘述進行條件判斷

4.2.2 使用if else 敘述進行流程控制

4.2.3 使用if elif 敘述進行多條件判斷

4.2.4 使用exit 敘述退出程式

4.3 多條件判斷敘述case  

4.3.1 多條件判斷敘述case 的基本語法

4.3.2 利用case 敘述處理選項參數  

4.3.3 利用case 敘述處理使用者輸入

4.4 運算符號  

4.4.1 算術運算子

4.4.2 位元運算符號

4.4.3 自動增加/ 自減運算子  

4.4.4 數字常數的進位

4.5 小結    

05 循環結構

5.1 步進循環敘述for

5.1.1 帶列表的for 循環敘述  

5.1.2 不帶列表的for 循環敘述  

5.1.3 類似C 風格的for 循環敘述  

5.1.4 使用for 循環敘述處理陣列  

5.2 until 循環敘述  

5.2.1 until 敘述的基本語法

5.2.2 利用until 敘述批次增加使用者  

5.3 while 循環敘述  

5.3.1 while 敘述的基本語法

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

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

5.3.4 了解while 敘述與until 敘述的區別

5.4 巢狀循環  

5.5 利用break 和continue 敘述控制循環

5.5.1 利用break 敘述控制循環  

5.5.2 利用continue 敘述控制循環  

5.5.3 分析break 敘述和continue 敘述的區別  

5.6 小結

06 函數

6.1 函數

6.1.1 什麼是函數

6.1.2 函數的定義

6.1.3 函數的呼叫

6.1.4 函數連結

6.1.5 函數的傳回值

6.1.6 函數和別名

6.1.7 再議全域變數和區域變數

6.2 函數參數

6.2.1 含有參數的函數的呼叫方法  

6.2.2 取得函數參數的個數  

6.2.3 透過位置變數接收參數值

6.2.4 移動位置參數

6.2.5 透過getopts 接收函數參數

6.2.6 間接參數傳遞

6.2.7 透過全域變數傳遞資料

6.2.8 傳遞陣列參數

6.3 函數程式庫檔案

6.3.1 函數程式庫檔案的定義  

6.3.2 函數程式庫檔案的呼叫

6.4 遞歸函數

6.5 小結

07 陣列

7.1 定義陣列

7.1.1 透過指定元素值來定義陣列

7.1.2 透過declare 敘述定義陣列  

7.1.3 透過元素值集合定義陣列

7.1.4 透過鍵值對定義陣列

7.1.5 陣列和普通變數

7.2 陣列的設定值

7.2.1 按索引為元素設定值

7.2.2 透過集合為陣列設定值  

7.2.3 在陣列尾端追加新元素  

7.2.4 透過循環為陣列元素設定值    

7.3 存取陣列  

7.3.1 存取第1 個陣列元素  

7.3.2 透過索引存取陣列元素

7.3.3 計算陣列的長度  

7.3.4 透過循環檢查陣列元素

7.3.5 參考所有的陣列元素

7.3.6 以切片方式取得部分陣列元素

7.3.7 陣列元素的取代

7.4 刪除陣列

7.4.1 刪除指定陣列元素  

7.4.2 刪除整個陣列

7.5 陣列的其他操作

7.5.1 複製陣列

7.5.2 連接陣列  

7.5.3 載入檔案內容到陣列

7.6 小結

08 正規表示法

8.1 什麼是正規表示法

8.1.1 為什麼使用正規表示法  

8.1.2 如何學習正規表示法

8.1.3 如何實作正規表示法  

8.2 正規表示法基礎  

8.2.1 正規表示法的原理

8.2.2 基本正規表示法  

8.2.3 擴充正規表示法  

8.2.4 Perl 正規表示法

8.2.5 正規表示法字元集

8.3 正規表示法應用    

8.3.1 比對單一字元

8.3.2 比對多個字元  

8.3.3 比對字串的開頭或結尾

8.3.4 運算子優先順序  

8.3.5 子運算式

8.3.6 萬用字元

8.4 grep 指令

8.4.1 grep 指令的基本語法  

8.4.2 grep 指令族簡介  

8.5 小結

09 基本文字處理

9.1 使用echo 指令輸出文字

9.1.1 顯示普通字串  

9.1.2 顯示逸出字元  數

9.1.4 換行和不換行  

9.1.5 顯示指令執行結果  

9.1.6 echo 指令執行結果的重新導向

9.2 文字的格式化輸出  

9.2.1 使用UNIX 定位字元

9.2.2 使用fold 指令格式化行

9.2.3 使用fmt 指令格式化段落  

9.2.4 使用rev 指令反轉字元順序

9.2.5 使用pr 指令格式化文字頁

9.3 使用sort 指令對文字排序

9.3.1 sort 指令的基本用法  

9.3.2 使用單一關鍵字排序

9.3.3 根據指定的列排序    

9.3.4 根據關鍵字降冪排序

9.3.5 數值列的排序

9.3.6 自訂列分隔符號  

9.3.7 刪除重複的行

9.3.8 根據多個關鍵字排序  

9.3.9 使用sort 指令合併檔案

9.4 文字的統計

9.4.1 輸出含有行號的文字行  

9.4.2 統計行數

9.4.3 統計單字數和字元數

9.5 使用cut 指令選取文字列  

9.5.1 cut 指令及其語法  

9.5.2 選擇指定的文字列

9.5.3 選擇指定數量的字元

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

9.6 使用paste 指令連接文字列

9.6.1 paste 指令及其語法

9.6.2 自訂列分隔符號  

9.6.3 連接指定的文字列

9.7 使用join 指令聯接文字列

9.7.1 join 指令及其語法

9.7.2 指定聯接關鍵字列

9.7.3 內聯接文字檔  

9.7.4 左聯接文字檔  

9.7.5 右聯接文字檔

9.7.6 全聯接文字檔

9.7.7 自訂輸出列

9.8 使用tr 指令取代檔案內容

9.8.1 tr 指令及其語法  

9.8.2 去除重複出現的字元    

9.8.3 刪除空行  

9.8.4 大小寫轉換

9.8.5 刪除指定字元  

9.9 小結 9

10 串流編輯

10.1 sed 指令及其語法

10.1.1 sed 指令以及語法

10.1.2 sed 指令的工作方式

10.1.3 使用行號定位文字行  

10.1.4 使用正規表示法定位文字行

10.2 sed 指令的常用操作

10.2.1 sed 編輯指令基本語法

10.2.2 選擇文字

10.2.3 取代文字

10.2.4 刪除文字

10.2.5 追加文字

10.2.6 插入文字

10.3 組合指令

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

10.3.2 使用分號執行多個子指令

10.3.3 對一個位址使用多個子指令

10.3.4 sed 指令檔

10.4 小結  

11 文字處理利器awk 指令

11.1 awk 入門  

11.1.1 awk 的功能    

11.1.2 awk 指令的基本語法

11.1.3 awk 的工作流程  

11.1.4 執行awk 程式的幾種方式  

11.2 awk 的模式比對  

11.2.1 關聯運算式

11.2.2 正規表示法

11.2.3 混合模式

11.2.4 區間模式

11.2.5 BEGIN 模式

11.2.6 END 模式  

11.3 變數

11.3.1 變數的定義和參考

11.3.2 系統內建變數

11.3.3 記錄分隔符號和欄位分隔符號

11.3.4 記錄和欄位的參考  

11.4 運算子和運算式  

11.4.1 算術運算子

11.4.2 設定運算子

11.4.3 條件運算子

11.4.4 邏輯運算子

11.4.5 關係運算子

11.4.6 其他運算子

11.5 函數

11.5.1 字串函數

11.5.2 算術函數

11.6 陣列

11.6.1 陣列的定義和設定值

11.6.2 檢查陣列  

11.7 流程控制    

11.7.1 if 敘述

11.7.2 while 敘述

11.7.3 do⋯while 敘述

11.7.4 for 敘述

11.7.5 break 敘述  

11.7.6 continue 敘述

11.7.7 next 敘述

11.7.8 exit 敘述

11.8 awk 程式的格式化輸出  

11.8.1 基本print 敘述

11.8.2 格式化輸出printf 敘述

11.8.3 使用sprintf() 函數產生格式化字串

11.9 awk 的程式與Shell 的互動

11.9.1 透過管線實現與Shell 的交換

11.9.2 透過system 函數實現與Shell 的互動  

11.10 小結

12 檔案的操作

12.1 檔案  

12.1.1 列出檔案  

12.1.2 檔案類型

12.1.3 檔案的許可權  

12.2 搜索檔案

12.2.1 find 指令以及語法

12.2.2 find 指令:路徑

12.2.3 find 指令:測試

12.2.4 find 指令:使用! 運算子對測試求相反條件

12.2.5 find 指令:處理檔案許可權錯誤訊息

12.2.6 find 指令:動作    

12.3 比較檔案

12.3.1 使用comm 比較檔案

12.3.2 使用diff 比較檔案

12.4 檔案描述符號

12.4.1 什麼是檔案描述符號

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

12.5 重新導向

12.5.1 輸出重新導向(覆蓋)

12.5.2 輸出重新導向(追加)

12.5.3 輸入重新導向  

12.5.4 目前文件

12.5.5 重新導向兩個檔案描述符號

12.5.6 使用exec 指令分配檔案描述符號

12.6 小結  

13 子Shell 與處理程序處理

13.1 子Shell

13.1.1 什麼是子Shell

13.1.2 內部指令、保留字和外部指令

13.1.3 在子Shell 中執行指令

13.1.4 把子Shell 中的變數值傳回父Shell

13.2 處理程序處理  

13.2.1 什麼是處理程序

13.2.2 透過指令稿監控處理程序

13.2.3 作業控制  

13.2.4 訊號與trap 指令

13.3 小結

    

第3 篇 Shell 程式設計實戰

14 Shell 指令稿偵錯技術

14.1 Shell 指令稿中的常見錯誤  

14.1.1 常見語法錯誤

14.1.2 常見邏輯錯誤  

14.2 Shell 指令稿偵錯技術

14.2.1 使用echo 指令偵錯指令稿

14.2.2 使用trap 指令偵錯Shell 指令稿

14.2.3 使用tee 指令偵錯Shell 指令稿

14.2.4 使用偵錯鉤子偵錯Shell 指令稿  

14.3 小結  

15 利用Shell 指令稿解決實際問題

15.1 撰寫系統服務指令稿  

15.1.1 系統啟動過程  

15.1.2 執行等級

15.1.3 服務指令稿的基本語法  

15.1.4 撰寫MySQL 服務指令稿  

15.2 透過指令稿管理Apache 伺服器記錄檔

15.2.1 Apache 以及記錄檔簡介  

15.2.2 備份歸檔檔案名稱產生函數

15.2.3 過期記錄檔備份歸檔函數

15.2.4 過期記錄檔刪除函數

15.2.5 記錄檔歸檔主程式

15.2.6 定時執行記錄檔歸檔指令稿

15.3 小結





沒有留言:

張貼留言