基本信息
原書名:Classic Shell Scripting
原出版社: O'Reilly Media, Inc.
作者:Arnold Robbins Nelson H.F.Beebe
譯者:O'Reilly Taiwan公司
叢書名: 北京華章圖文信息有限公司O'Reilly系列
出版社:機械工業出版社
ISBN:9787111255048
出版日期:2009 年4月
開本:16開
頁碼:494
版次:1-1
內容簡介
shell腳本編程(scripting)的技巧永遠不會過時:它們可以讓unix充分發揮其真實的潛能。對unix的用戶與系統管理者而言,編寫shell腳本是必須的工作,它可以讓你快速地控制與定製任何unix系統的強大功能。有了shell腳本,你可以結合基本的unix文本與檔案處理命令來消化數據,以及自動化重複的工作。一旦你對shell腳本的編寫掌控自如,在接下來的幾年,這些技巧將對你相當有幫助。.
編寫shell腳本所需要的不只是對shell語言的認識,還必須熟知單個的unix程式:你必須知道每個程式為什麼會放在那兒,以及如何使用該程式或如何將其與其他程式結合。本書將告訴你這些有關 unix主流工具的知識。除此之外,本書還會幫助你解決unix命令與標準的差異。..
作者熟知unix程式使用的基本技巧與操作上細微的差異。他們不但會告訴你如何構建一個絕佳的腳本,還會教你如何避免落入讓你功虧一簣的陷阱。有了本書,你可以節省很多力氣。
我們要學習的不只是如何寫出有用的shell腳本,你還得了解如何迅速、確實地定製shell,讓程式的可移植性達到最佳狀態,脫離對特定系統的依賴。這些技巧對任何操作與維護unix及linux系統的人而言都很重要。本書所提供的知識,將可以幫助你掌握基本的shell腳本編寫技巧
目錄
序.
前言
第1章 背景知識
1.1 unix簡史
1.2 軟體工具的原則
1.3 小結
第2章 入門
2.1 腳本程式語言與編譯型語言的差異
2.2 為什麼要使用shell腳本
2.3 一個簡單的腳本
2.4 自給自足的腳本:位於第一行的#!
2.5 shell的基本元素
2.6 訪問shell腳本的參數
2.7 簡單的執行跟蹤
2.8 國際化與本地化
2.9 小結
第3章 查找與替換
3.1 查找文本
3.2 正則表達式
3.3 欄位處理
.3.4 小結
第4章 文本處理工具
4.1 排序文本
4.2 刪除重複
4.3 重新格式化段落
4.4 計算行數、字數以及字元數
4.5 列印
4.6 提取開頭或結尾數行
4.7 小結
第5章 管道的神奇魔力
5.1 從結構化文本檔案中提取數據
5.2 針對web的結構型數據
5.3 文字解謎好幫手
5.4 單詞列表
5.5 標籤列表
5.6 小結
第6章 變數、判斷、重複動作
6.1 變數與算術
6.2 退出狀態
6.3 case 語句
6.4 循環
6.5 函式
6.6 小結
第7章 輸入/輸出、檔案與命令執行
7.1 標準輸入、標準輸出與標準錯誤輸出
7.2 使用read讀取行
7.3 關於重定向
7.4 printf的完整介紹
7.5 波浪號展開與通配符
7.6 命令替換
7.7 引用
7.8 執行順序與eval
7.9 內建命令
7.10 小結
第8章 產生腳本
8.1 路徑查找
8.2 軟體構建自動化
8.3 小結
第9章 awk的驚人表現
9.1 awk命令行
9.2 awk程式模型
9.3 程式元素..
9.4 記錄與欄位
9.5 模式與操作
9.6 在awk里的單行程式
9.7 語句
9.8 用戶定義函式
9.9 字元串函式
9.10 數值函式
9.11 小結
第10章 檔案處理
10.1 列出檔案
10.2 使用touch更新修改時間
10.3 臨時性檔案的建立與使用
10.4 尋找檔案
10.5 執行命令:xargs
10.6 檔案系統的空間信息
10.7 比較檔案
10.8 小結
第11章 擴展實例:合併用戶資料庫
11.1 問題描述
11.2 密碼檔案
11.3 合併密碼檔案
11.4 改變檔案所有權
11.5 其他真實世界的議題
11.6 小結
第12章 拼寫檢查
12.1 spell程式
12.2 最初的unix拼寫檢查原型
12.3 改良的ispell與aspell
12.4 在awk內的拼寫檢查程式
12.5 小結
第13章 進程
13.1 進程建立
13.2 進程列表
13.3 進程控制與刪除
13.4 進程系統調用的追蹤
13.5 進程賬
13.6 延遲的進程調度
13.7 /proc檔案系統
13.8 小結
第14章 shell可移植性議題與擴展
14.1 迷思
14.2 bash的shopt命令
14.3 共通的擴展
14.4 下載信息
14.5 其他擴展的bourne式shell
14.6 shell版本
14.7 shell初始化與終止
14.8 小結
第15章 安全的shell腳本:起點
15.1 安全性shell腳本提示
15.2 限制性shell
15.3 特洛伊木馬
15.4 為shell腳本設定setuid:壞主意
15.5 ksh93與特權模式
15.6 小結
附錄a 編寫手冊頁
附錄b 檔案與檔案系統
附錄c 重要的unix命令
參考書目...
前言
剛開始使用UNIX(注1)的用戶與程式設計師突然面對各式各樣的程式時,都會有很多疑問,例如“它們的功能是什麼”,還有“我怎么使用它們”。
本書可以回答你這些問題。告訴你如何結合UNIX工具,將其與標準的Shell相結合完成工作。Shell腳本的編寫是門藝術,需要的不只是Shell語言的相關知識,還要你對各個獨立的UNIX程式有基本認識:為什麼會有這些工具,要怎么單純地使用它們,怎么將它們與其他程式結合套用。
為什麼需要學習如何編寫Shell命令?因為大部分情況下,中型到大型的問題都能拆成較小的部分,這些小部分也多半都能找到現成的UNIX工具處理。用心編寫的好用Shell腳本常常能夠比C或C++語言編寫的程式更快地解決相同的問題。也可以讓Shell腳本提供可移植性,也就是說,可以跨越UNIX與POSIX兼容的系統,有時僅需略作修改,甚至不必修改,即可使用。.
談到UNIX程式時,我們使用工具(tool)這個字。以UNIX工具箱(toolbox)的做法解決問題,長久以來以“軟體工具(Software Tools)”哲學(注2)為人所熟知。
瑞士軍刀是很多人口袋裡的好幫手。它有刀刃、螺絲起子、開罐器、牙籤等工具。功能更齊備的,還有其他像拔塞鑽、放大鏡等工具。瑞士軍刀能派上用場的時候很多,雖然用它來修削和進行簡單雕刻很不錯,但你絕不會拿它來蓋狗屋或製作鳥類餵食器。相反,做這類工作時你會尋求更專門的工具,例如鐵槌、鋸子、夾鉗或刨刀等。同理,當你在解決程式化問題時,使用專門的軟體工具會比較好。
這是給誰看的書
這本書是寫給那些在UNIX環境下發現必須寫些Shell腳本,以利於工作進行的計算機用戶與軟體開發人員。例如,你可能是正在念計算科學的學生,手上有學校給你的第一個UNIX系統賬號,你想知道在UNIX下更多的東西,例如你的Windows個人計算機無法處理的那些工作(這種情況下,你通常得寫幾個腳本來定製個人環境)。或者,你可能是個系統管理新手,需要為公司或學校寫幾個專用程式(可能是處理事件日誌檔案,賬號、賬單管理之類的事情)。你也可能是Mac OS的開發老手,但轉到嶄新的Mac OS X的世界,它的安裝程式是以Shell腳本寫成。不管你來自哪裡,如果你想學Shell腳本,這本書就是寫給你的。在這本書里你能學到:
軟體工具設計概念與原則
一些好的軟體工具設計與實例上的實踐規則。我們會解釋這些原則,還會在這本書里貫徹執行。
UNIX工具是什麼
UNIX的核心工具組會在我們編寫Shell腳本時不斷地重複使用。我們會介紹Shell與正則表達式的基本概念,並在解決特定問題時展現各種核心工具的用法。除了介紹工具能做什麼之外,我們還會告訴你,為什麼要使這個工具,為什麼它有這些特殊選項。
《Learning UNIX》這本書是在介紹UNIX系統,讓你從對UNIX毫無經驗成長為會基本操作的用戶。《UNIX in a nutshell》這本書則是廣泛地介紹UNIX工具包,對於使用時機與特定工具用法的介紹很少。我們的目的就在彌補這兩本書之間的鴻溝:如何靈活運用這些UNIX提供的工具包,讓工作更順暢,更有效率,也更從容(我們的期望)。
何結合所有工具,完成工作
編寫Shell腳本時,其實會是“整體的功能比各部分加起來的總和還強大”。Shell的使用就像整合個別工具的黏著劑,讓你只要花點心思,就能得到驚人的效果。
標準工具幾個常見的擴展
如果你已經是GNU/Linux或BSD系統的用戶,很可能你的工具還有其他額外的、好用的功能或選項。這部分我們也會介紹。
不可或缺的非標準工具
有些程式,在大部分傳統的UNIX系統里並非“標準的”,但我們又不能沒有它。我們會在適當的地方介紹它們,也會提供使用時機的相關信息。
對長期使用UNIX的開發人員與管理者來說,軟體工具的設計原則一直沒有什麼改變。因此,推廣的書籍雖然還算堪用,但已經20年未更新了,甚空更久!UNIX系統在這些書寫成之後,有了許多變動。因此,我們覺得是更新這些想法的時候了,我們利用這些工具的現行版本、在現行系統下展示範例。下面是我們將要強調的部分:
所有的呈現是以POSIX為基礎。POSIX為一系列描述可移植操作系統環境的標準正式名稱的縮寫。POSIX標準是開發人員的挑戰,他們必須兼顧程式與Shell腳本在不同廠商所提供的各種平台上的可移植性。我們將在最新的POSIX標準下展現Shell語言、各個工具程式及其選項