目錄
序
前言
第 1 章 背景知識
1.1 Unix 簡史
1.2 軟體工具的原則
1.3 摘要
第 2 章 入門
2.1 Scripting 語言與 Compiled 語言的差異
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 章 管道(Pipelines)的神奇魔力
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 特洛伊木馬(Trojan Horses)
15.4 為 shell 命令稿設定 setuid:壞主意
15.5 ksh93 與特權模式(Privileged Mode)
15.6 摘要
附錄 A 撰寫手冊頁
附錄 B 檔案與檔案系統
附錄 C 重要的 Unix 命令
參考書目
名詞釋疑
索引