本書由淺入深、循序漸進(jìn)地詳細(xì)講解了LinuxShell編程的基本知識。這些基本知識包括Shell編程的基本知識、文本處理的工具和方法、正則表達(dá)式、Linux系統(tǒng)知識等。
本書旨在通過理清Linux Shell編程的脈絡(luò),從基本概念著手,以豐富、實(shí)用的范例作為輔助,使讀者能夠深入淺出的學(xué)習(xí)LinuxShell編程。
本書的每一章節(jié)都配有綜合案例,這些綜合案例不僅可以使讀者復(fù)習(xí)前面所學(xué)的知識,還可以增加開發(fā)項(xiàng)目的經(jīng)驗(yàn)。這些案例實(shí)用性很強(qiáng),許多代碼可以直接應(yīng)用到Linux系統(tǒng)管理中。
本書配有全程錄像的視頻講解光盤,讀者可以將視頻和書結(jié)合起來學(xué)習(xí),可以更快、更好地掌握Linux Shell編程技術(shù)。
本書適合于Linux Shell編程的初學(xué)者,有一定LinuxShell編程基礎(chǔ),但還需要進(jìn)一步提高的人閱讀。本書對于有一定編程經(jīng)驗(yàn)的程序員也有很好的參考價(jià)值。
從基礎(chǔ)到精通全面介紹Linux Shell編程 暢銷不衰的Linux經(jīng)典入門圖書 適用于各種常見版本的Linux Shell Linux管理人員的參考手冊 豐富典型的實(shí)操案例 全程錄像的視頻講解光盤
張昊,畢業(yè)于南京大學(xué)理學(xué)院,南京大學(xué)開源愛好者組織創(chuàng)始人、南京Linux 使用者組織(NJLUG) 創(chuàng)始人,曾經(jīng)任職于千橡互動從事底層引擎的開發(fā),編寫《Linux Shell編程從入門到精通》。程國鋼,北京航空航天大學(xué)博士,有豐富的教學(xué)科研技術(shù)經(jīng)驗(yàn),開設(shè)單片機(jī)教學(xué)課程,承擔(dān)過基于嵌入式的國家863級課題、院級別和國家氣象局項(xiàng)目,有多本圖書編寫經(jīng)驗(yàn)。
第1章 初識Shell程序
1.1 **道菜
1.2 如何運(yùn)行程序
1.2.1 選婿:位于**行的#!
1.2.2 找茬:程序執(zhí)行的差異
1.2.3 shell的命令種類
1.3 Linux Shell的變量
1.3.1 變量
1.3.2 用echo輸出變量
1.3.3 環(huán)境變量的相關(guān)操作
1.3.4 shell中一些常用環(huán)境變量
1.4 Linux Shell是解釋型語言
1.4.1 編譯型語言與解釋型語言
1.4.2 Linux Shell編程的優(yōu)勢
1.5 小結(jié)
第2章 Shell編程基礎(chǔ)
2.1 向腳本傳遞參數(shù)
2.1.1 Shell腳本的參數(shù)
2.1.2 參數(shù)的用途
2.2 I/O重定向
2.2.1 標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出與標(biāo)準(zhǔn)錯誤
2.2.2 管道與重定向
2.2.3 文件描述符
2.2.4 特殊文件的妙用
2.3 基本文本檢索
2.4 UNIX/Linux系統(tǒng)的設(shè)計(jì)與shell 編程
2.4.1 一切皆文件
2.4.2 UNIX編程的基本原則
2.5 小結(jié)
第3章 編程的基本元素
3.1 再識變量
3.1.1 用戶變量
3.1.2 位置變量
3.1.3 環(huán)境變量
3.1.4 啟動文件
3.2 函數(shù)
3.2.1 函數(shù)定義
3.2.2 函數(shù)的參數(shù)和返回值
3.3 條件控制與流程控制
3.3.1 if/else語句
3.3.2 退出狀態(tài)
3.3.3 退出狀態(tài)與邏輯操作
3.3.4 條件測試
3.4 循環(huán)控制
3.4.1 for循環(huán)
3.4.2 while/until循環(huán)
3.4.3 跳出循環(huán)
3.4.4 循環(huán)實(shí)例
3.5 小結(jié)
第4章 正則表達(dá)式
4.1 什么是正則表達(dá)式
4.1.1 正則表達(dá)式的廣泛應(yīng)用
4.1.2 如何學(xué)習(xí)正則表達(dá)式
4.1.3 如何實(shí)踐正則表達(dá)式
4.2 正則基礎(chǔ)
4.2.1 元字符
4.2.2 單個(gè)字符
4.2.3 單個(gè)表達(dá)式匹配多個(gè)字符
4.2.4 文本匹配錨點(diǎn)
4.2.5 運(yùn)算符優(yōu)先級
4.2.6 更多差異
4.3 正則表達(dá)式的應(yīng)用
4.3.1 擴(kuò)展
4.3.2 案例研究:羅馬數(shù)字
4.3.3 案例研究:解析電話號碼
4.4 小結(jié)
第5章 基本文本處理
5.1 排序文本
5.1.1 sort命令的行排序
5.1.2 sort命令的字段排序
5.1.3 sort小結(jié)
5.2 文本去重
5.3 統(tǒng)計(jì)文本行數(shù)、字?jǐn)?shù)以及字 符數(shù)
5.4 打印和格式化輸出
5.4.1 使用pr打印文件
5.4.2 使用fmt命令格式化文本
5.4.3 使用fold限制文本寬度
5.5 提取文本開頭和結(jié)尾
5.6 字段處理
5.6.1 字段的使用案例
5.6.2 使用cut取出字段
5.6.3 使用join連接字段
5.6.4 其他字段處理方法
5.7 文本替換
5.7.1 使用tr替換字符
5.7.2 其他選擇
5.8 一個(gè)稍微復(fù)雜的例子
5.8.1 實(shí)例描述
5.8.2 取出記錄的ip字段和id字段
5.8.3 將記錄按照IP順序排序
5.8.4 使用uniq統(tǒng)計(jì)重復(fù)IP
5.8.5 根據(jù)訪問次數(shù)進(jìn)行排序
5.8.6 提取出現(xiàn)次數(shù)*多的100條
5.9 小結(jié)
第6章 文件和文件系統(tǒng)
6.1 文件
6.1.1 列出文件
6.1.2 文件的類型
6.1.3 文件的權(quán)限
6.1.4 文件的修改時(shí)間
6.2 尋找文件
6.2.1 find命令的參數(shù)
6.2.2 遍歷文件
6.3 比較文件
6.3.1 使用comm比較排序后文件
6.3.2 使用diff比較文件
6.3.3 其他文本比較方法
6.4 文件系統(tǒng)
6.4.1 什么是文件系統(tǒng)
6.4.2 文件系統(tǒng)與磁盤分區(qū)
6.4.3 Linux分區(qū)格式的選擇與安全性
6.4.4 文件系統(tǒng)與目錄樹
6.4.5 文件系統(tǒng)的創(chuàng)建與掛載
6.5 小結(jié)
第7章 流編輯
7.1 什么是sed
7.1.1 挑選編輯器
7.1.2 sed的版本
7.2 sed示例
7.2.1 sed的工作方式
7.2.2 sed工作的地址范圍
7.2.3 規(guī)則表達(dá)式
7.3 更強(qiáng)大的sed功能
7.3.1 替換
7.3.2 地址范圍的迷惑
7.4 組合命令
7.4.1 組合多條命令
7.4.2 將多條命令應(yīng)用到一個(gè)地址范圍
7.5 實(shí)際的例子
7.6 sed實(shí)踐
7.6.1 **步 替換名字
7.6.2 第二步 刪除前3行
7.6.3 第三步 顯示5~10行
7.6.4 第四步 刪除包含Lane的行
7.6.5 第五步 顯示生日在November-December之間的行
7.6.6 第六步 把3個(gè)星號(***)添加到以Fred開頭的行
7.6.7 第七步 用JOSE HASRETIRED取代包含Jose的行
7.6.8 第八步 把Popeye的生日改成11/14/46
7.6.9 第九步 刪除所有空白行
7.6.10 第十步 腳本
7.7 小結(jié)
第8章 文本處理利器awk
8.1 來個(gè)案例
8.2 基本語法
8.2.1 多個(gè)字段
8.2.2 使用其他字段分隔符
8.3 AWK語言特性
8.3.1 AWK代碼結(jié)構(gòu)
8.3.2 變量與數(shù)組
8.3.3 算術(shù)運(yùn)算和運(yùn)算符
8.3.4 判斷與循環(huán)
8.3.5 多條記錄
8.4 用戶自定義函數(shù)
8.4.1 自定義函數(shù)格式
8.4.2 引用傳遞和值傳遞
8.4.3 遞歸調(diào)用
8.5 字符串與算術(shù)處理
8.5.1 格式化輸出
8.5.2 字符串函數(shù)
8.5.3 算術(shù)函數(shù)
8.6 案例分析
8.6.1 生成數(shù)據(jù)報(bào)表
8.6.2 多文件聯(lián)合處理
8.6.3 檢驗(yàn)passwd格式的正確性
8.6.4 sed/awk單行腳本
8.7 小結(jié)
第9章 進(jìn)程
9.1 進(jìn)程的含義與查看
9.1.1 理解進(jìn)程
9.1.2 創(chuàng)建進(jìn)程
9.1.3 查看進(jìn)程
9.1.4 進(jìn)程的屬性
9.2 進(jìn)程管理
9.2.1 進(jìn)程的狀態(tài)
9.2.2 shell命令的執(zhí)行
9.2.3 進(jìn)程與任務(wù)調(diào)度
9.3 信號
9.3.1 信號的基本概念
9.3.2 產(chǎn)生信號
9.4 Linux的**個(gè)進(jìn)程init
9.5 案例分析:Linux系統(tǒng)中管道的實(shí)現(xiàn)
9.6 調(diào)度系統(tǒng)任務(wù)
9.6.1 任務(wù)調(diào)度的基本介紹
9.6.2 調(diào)度重復(fù)性系統(tǒng)任務(wù)(cron)
9.6.3 使用at命令
9.7 進(jìn)程的窗口/proc
9.7.1 proc——虛擬文件系統(tǒng)
9.7.2 查看/proc的文件
9.7.3 從proc獲取信息
9.7.4 通過/proc與內(nèi)核交互
9.8 Linux的線程簡介
9.8.1 Linux線程的定義
9.8.2 Pthread線程的使用場合
9.8.3 Linux進(jìn)程和線程的發(fā)展
9.9 小結(jié)
第10章 超級工具
10.1 不同的shell
10.1.1 修改登錄shell和切換shell
10.1.2 選擇shell
10.2 SSH
10.2.1 SSH的安全驗(yàn)證機(jī)制
10.2.2 使用SSH登錄遠(yuǎn)程主機(jī)
10.2.3 OpenSSH密鑰管理
10.2.4 配置SSH
10.2.5 使用SSH工具套裝拷貝文件
10.3 screen工具
10.3.1 任務(wù)退出的元兇:SIGHUP信號
10.3.2 開始使用screen
10.3.3 screen常用選項(xiàng)
10.3.4 實(shí)例:ssh+screen管理遠(yuǎn)程會話
10.4 文本編輯工具Vim
10.4.1 為什么選擇Vim
10.4.2 從何處獲取Vim
10.4.3 Vim的工作模式
10.4.4 首次接觸:step by step
10.4.5 鼠標(biāo)的移動
10.4.6 基本編輯指令
10.4.7 復(fù)制(yank)
10.4.8 搜尋、替換
10.5 小結(jié)
第11章 Linux