本書從實際的應(yīng)用場景出發(fā),深入淺出地介紹了編寫 Shell腳本所包含的各項常用技術(shù),使讀者在不知不覺中就能掌握 Shell腳本的編寫和使用技巧,是 Shell腳本編程開發(fā)初學(xué)者的絕佳。
本書分為 18章,分別介紹了 Linux系統(tǒng)基本知識,Shell編程基礎(chǔ),Shell編程的常用語法知識,如變量、特殊符號、文件處理、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)、正則表達(dá)式、grep命令、sed編輯器、gawk編輯器等,如何對 Shell腳本的執(zhí)行進(jìn)行控制和優(yōu)化,通過兩個應(yīng)用實例,加深讀者對 Linux系統(tǒng)下 Shell編程的認(rèn)識,提高讀者的編程能力。
本書適用于 Shell編程初學(xué)者和 Linux系統(tǒng)管理的初學(xué)者,可以作為日常學(xué)習(xí)的教材,還可以作為日常管理的參考書。
第1章 學(xué)習(xí) Shell的背景知識——Linux系統(tǒng)
1.1 Linux系統(tǒng)基礎(chǔ)
1.1.1 Linux系統(tǒng)的發(fā)展
1.1.2 Linux系統(tǒng)和Windows系統(tǒng)的區(qū)別
1.1.3 Linux的啟動過程
1.2 Linux文件系統(tǒng)基礎(chǔ)介紹
1.2.1 必須了解的節(jié)點inode
1.2.2 Linux系統(tǒng)文件結(jié)構(gòu)
1.3 學(xué)會Linux系統(tǒng)的基本使用
1.3.1 系統(tǒng)的登錄與退出
1.3.2 系統(tǒng)基本選項配置
1.3.3 文本編輯器的使用
1.4 走進(jìn) Shell
1.4.1 什么是Shell
1.4.2 Shell在Linux系統(tǒng)中的作用
1.4.3 Shell的種類
1.5 小結(jié)
第2章 邁出Shell腳本編程及時步
2.1 Shell腳本語言概述
2.1.1 Shell腳本語言的定義
2.1.2 Shell終端的基本使用
2.1.3 Shell終端菜單的使用
2.2 Shell命令格式介紹
2.2.1 Shell命令格式
2.2.2 命令行界面介紹
2.2.3 如何獲取幫助
2.3 及時個Shell程序:Hello,Bash Shell!
2.3.1 創(chuàng)建Shell腳本
2.3.2 Shell腳本中的格式介紹
2.3.3 如何執(zhí)行Shell程序
2.4 小結(jié)
第3章 Shell常用命令大演練
3.1 Shell命令使用基礎(chǔ)
3.1.1 文件類型
3.1.2 路徑和相對路徑
3.1.3 文件屬性和文件權(quán)限
3.1.4 用戶和用戶組
3.1.5 特殊目錄介紹
3.2 用戶和用戶組管理
3.2.1 用戶管理常用命令
3.2.2 用戶組管理常用命令
3.2.3 其他常用命令
3.3 文件和目錄操作
3.3.1 文件操作常用命令
3.3.2 目錄操作常用命令
3.3.3 文件權(quán)限管理常用命令
3.3.4 查找文件常用命令
3.4 系統(tǒng)管理相關(guān)
3.4.1 網(wǎng)絡(luò)操作常用命令
3.4.2 系統(tǒng)資源管理常用命令
3.4.3 磁盤信息查看常用命令
3.5 小結(jié)
第4章 Shell腳本中的變量
4.1 變量的簡單使用
4.1.1 變量的使用
4.1.2 變量的輸入和輸出
4.1.3 變量的輸出命令echo
4.2 Shell中特殊變量的使用
4.2.1 位置參數(shù)介紹
4.2.2 $@和$的區(qū)別
4.3 環(huán)境變量的使用
4.3.1 Shell中的環(huán)境變量
4.3.2 環(huán)境變量的配置文件
4.3.3 全局環(huán)境變量和本地環(huán)境變量
4.3.4 環(huán)境變量的設(shè)定
4.3.5 環(huán)境變量的取消
4.4 小結(jié)
第5章 Shell腳本中的特殊符號
5.1 引號的使用
5.1.1 單引號的使用
5.1.2 雙引號的使用
5.1.3 倒引號的使用
5.2 通配符和元字符
5.2.1 使用通配符
5.2.2 使用元字符
5.3 管道
5.4 其他特殊字符介紹
5.4.1 后臺運行符
5.4.2 括號
5.4.3 分號
5.5 小結(jié)
第6章 Linux中的文件處理
6.1 Linux中的文件類型
6.1.1 設(shè)備文件
6.1.2 設(shè)備文件的掛載和卸載
6.1.3 鏈接文件
6.1.4 文件描述符
6.2 標(biāo)準(zhǔn)輸入、輸出與錯誤
6.2.1 標(biāo)準(zhǔn)輸入
6.2.2 標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤
6.3 重定向
6.3.1 重定向的定義
6.3.2 輸入重定向
6.3.3 輸出重定向
6.4 合并標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤
6.5 小結(jié)
第7章 Shell腳本中的分支結(jié)構(gòu)
7.1 測試命令的使用
7.1.1 測試命令的基礎(chǔ)結(jié)構(gòu)
7.1.2 測試文件類型
7.1.3 測試字符串
7.1.4 測試數(shù)值
7.1.5 復(fù)合測試條件
7.2 if分支結(jié)構(gòu)
7.2.1 if -then結(jié)構(gòu)
7.2.2 if -then-else結(jié)構(gòu)
7.2.3 嵌套結(jié)構(gòu)
7.3 case多條件分支結(jié)構(gòu)
7.3.1 case結(jié)構(gòu)基礎(chǔ)
7.3.2 在Shell腳本中使用case結(jié)構(gòu)
7.3.3 select命令的使用
7.4 小結(jié)
第8章 Shell中的循環(huán)結(jié)構(gòu)
8.1 for循環(huán)
8.1.1 使用for-in結(jié)構(gòu)
8.1.2 C式for結(jié)構(gòu)
8.2 while命令的使用
8.2.1 使用while結(jié)構(gòu)
8.2.2 多條件的while結(jié)構(gòu)
8.2.3 使用until命令
8.3 命令的嵌套
8.3.1 for命令的嵌套
8.3.2 while命令的嵌套
8.3.3 until命令的嵌套
8.4 循環(huán)控制符
8.4.1 使用break中斷
8.4.2 使用continue繼續(xù)
8.5 小結(jié)
第9章 Shell中的函數(shù)
9.1 函數(shù)的基本用法
9.1.1 函數(shù)的創(chuàng)建與使用
9.1.2 函數(shù)的參數(shù)
9.2 函數(shù)的返回值
9.2.1 返回值基礎(chǔ)
9.2.2 函數(shù)的默認(rèn)返回值
9.2.3 return命令的使用
9.2.4 使用函數(shù)的返回值
9.3 函數(shù)中的全局變量和局部變量
9.3.1 全局變量
9.3.2 局部變量
9.4 數(shù)組與函數(shù)
9.4.1 數(shù)組作為函數(shù)參數(shù)
9.4.2 數(shù)組作為函數(shù)返回值
9.5 腳本函數(shù)遞歸
9.6 函數(shù)的嵌套調(diào)用
9.7 小結(jié)
第10章 Shell腳本編寫技巧
10.1 腳本編寫規(guī)范
10.1.1 命名規(guī)范
10.1.2 注釋風(fēng)格
10.1.3 其他需要注意的規(guī)范
10.2 腳本優(yōu)化
10.2.1 Shell腳本優(yōu)化原則
10.2.2 提供足夠的提示信息
10.3 腳本使用技巧
10.3.1 命令選項說明
10.3.2 算術(shù)運算
10.3.3 高級算術(shù)運算
10.4 小結(jié)
第11章 正則表達(dá)式
11.1 正則表達(dá)式基礎(chǔ)
11.1.1 正則表達(dá)式的定義
11.1.2 正則表達(dá)式的分類
11.2 基本正則表達(dá)式的常用符號
11.2.1 使用點字符匹配單字符
11.2.2 使用定位符
11.2.3 使用""匹配字符串中的單字符或其重復(fù)序列
11.2.4 使用"\"屏蔽一個特殊字符的含義
11.3 擴(kuò)展正則表達(dá)式的常用符號
11.3.1 使用"[]"匹配一個范圍或集合
11.3.2 使用"\{\}"匹配模式結(jié)果出現(xiàn)的次數(shù)
11.3.3 問號的使用
11.4 小結(jié)
第12章 Shell中的文本搜索工具——grep家族
12.1 grep的基礎(chǔ)使用
12.1.1 grep命令的基本使用方式
12.1.2 grep選項
12.1.3 行數(shù)
12.1.4 大小寫敏感
12.1.5 顯示非匹配行
12.1.6 查詢多個文件或多個關(guān)鍵字
12.2 grep和正則表達(dá)式
12.2.1 模式范圍以及范圍組合
12.2.2 定位符的使用
12.2.3 字符匹配
12.2.4 模式出現(xiàn)幾率
12.2.5 匹配特殊字符
12.3 grep命令的擴(kuò)展使用
12.3.1 類名的使用
12.3.2 egrep命令的使用
12.3.3 fgrep命令的使用
12.4 grep命令使用實例
12.4.1 目錄搜索——查找特定目錄或文字
12.4.2 使用ps命令檢索特定的進(jìn)程
12.5 小結(jié)
第13章 sed編程
13.1 認(rèn)識sed
13.1.1 sed工作模式
13.1.2 sed常用指令
13.1.3 sed常用選項
13.1.4 sed地址范圍
13.2 sed編輯器常用命令
13.2.1 替換命令的使用
13.2.2 刪除命令的使用
13.2.3 文本的添加和替換
13.3 高級sed編程
13.3.1 同時處理多行數(shù)據(jù)
13.3.2 sed編輯器的空間
13.3.3 sed編輯器的反向
13.3.4 重定向sed的輸出
13.4 小結(jié)
第14章 gawk編程
14.1 gawk概述
14.1.1 gawk基本介紹
14.1.2 gawk基本使用
14.2 變量的使用
14.2.1 內(nèi)置變量的使用
14.2.2 自定義變量的使用
14.2.3 數(shù)組的使用
14.3 結(jié)構(gòu)的使用
14.3.1 條件結(jié)構(gòu)的使用
14.3.2 循環(huán)結(jié)構(gòu)的使用
14.3.3 循環(huán)結(jié)構(gòu)控制語句
14.4 函數(shù)的使用
14.4.1 算術(shù)函數(shù)的使用
14.4.2 字符串處理函數(shù)的使用
14.4.3 時間函數(shù)的使用
14.5 小結(jié)
第15章 腳本控制
15.1 Linux信號控制
15.1.1 Linux信號機(jī)制簡介
15.1.2 使用Shell腳本操作信號
15.2 進(jìn)程的控制
15.2.1 后臺運行符介紹
15.2.2 運行進(jìn)程的控制
15.2.3 nohup命令的使用
15.3 腳本運行的優(yōu)先級
15.3.1 優(yōu)先級介紹
15.3.2 使用nice指定優(yōu)先級
15.3.3 使用renice重置優(yōu)先級
15.4 小結(jié)
第16章 腳本運行的優(yōu)化
16.1 添加窗口
16.1.1 dialog軟件的安裝
16.1.2 dialog命令的幫助選項
16.1.3 dialog命令的使用
16.2 dialog常用窗口的使用
16.2.1 消息窗口
16.2.2 yesno窗口
16.2.3 文本框的使用
16.2.4 菜單的使用
16.3 顏色的使用
16.4 創(chuàng)建菜單
16.4.1 在Shell腳本中創(chuàng)建菜單
16.4.2 創(chuàng)建子菜單函數(shù)
16.4.3 腳本的整合
16.5 小結(jié)
第17章 Shell實戰(zhàn)之系統(tǒng)管理
17.1 系統(tǒng)監(jiān)測
17.1.1 系統(tǒng)監(jiān)控基礎(chǔ)
17.1.2 Ubuntu自帶的系統(tǒng)監(jiān)控工具
17.1.3 監(jiān)控腳本的編寫
17.2 計劃任務(wù)的實現(xiàn)
17.2.1 at命令的使用
17.2.2 atq命令的使用
17.2.3 cron的使用
17.3 網(wǎng)絡(luò)管理
17.3.1 網(wǎng)絡(luò)配置
17.3.2 服務(wù)器的安裝
17.4 日志管理
17.4.1 日志簡介
17.4.2 守護(hù)進(jìn)程syslogd
17.4.3 日志的備份操作
17.4.4 日志的定時操作
17.5 小結(jié)
第18章 Shell實戰(zhàn)之?dāng)?shù)據(jù)庫操作
18.1 Linux系統(tǒng)中的數(shù)據(jù)庫
18.1.1 SQLite簡介
18.1.2 SQLite的圖形化操作
18.1.3 MySQL簡介
18.2 SQL語句
18.2.1 SQL語言基本介紹
18.2.2 基本的SQL操作
18.2.3 在Shell腳本中執(zhí)行SQL語句
18.3 圖書管理系統(tǒng)中數(shù)據(jù)庫操作實例
18.3.1 數(shù)據(jù)庫操作基本流程
18.3.2 創(chuàng)建表
18.3.3 增加圖書信息
18.3.4 修改圖書信息
18.3.5 刪除圖書信息
18.4 小結(jié)