LINUX與UNIX Shell編程指南

n

內容介紹

本書共分五部分,詳細介紹了shell編程技巧,各種UNIX命令及語法,還涉及了UNIX下的文字處理以及少量的系統管理問題。本書內容全面、文字簡潔流暢,適合Shell編程人員學習、參考。

作品目錄

目 錄
譯者序
前言
第一部分 shell
第1章 檔案安全與許可權 1
1.1 檔案 1
1.2 檔案類型 2
1.3 許可權 2
1.4 改變許可權位 4
1.4.1 符號模式 4
1.4.2 chmod命令舉例 5
1.4.3 絕對模式 5
1.4.4 chmod命令的其他例子 6
1.4.5 可以選擇使用符號模式或絕對模式 7
1.5 目錄 7
1.6 suid/guid 7
1.6.1 為什麼要使用suid/guid 8
1.6.2 設定suid/guid的例子 8
1.7 chown和chgrp 9
1.7.1 chown舉例 9
1.7.2 chgrp舉例 9
1.7.3 找出你所屬於的用戶組 9
1.7.4 找出其他用戶所屬於的組 10
1.8 umask 10
1.8.1 如何計算umask值 10
1.8.2 常用的umask值 11
1.9 符號連結 12
1.9.1 使用軟連結來保存檔案的多個映像 12
1.9.2 符號連結舉例 12
1.10 小結 13
第2章 使用find和xargs 14
2.1 find命令選項 14
2.1.1 使用name選項 15
2.1.2 使用perm選項 16
2.1.3 忽略某個目錄 16
2.1.4 使用user和nouser選項 16
2.1.5 使用group和nogroup選項 16
2.1.6 按照更改時間查找檔案 17
2.1.7 查找比某個檔案新或舊的檔案 17
2.1.8 使用type選項 17
2.1.9 使用size選項 18
2.1.10 使用depth選項 18
2.1.11 使用mount選項 18
2.1.12 使用cpio選項 18
2.1.13 使用exec或ok來執行shell命令 19
2.1.14 find命令的例子 20
2.2 xargs 20
2.3 小結 21
第3章 後台執行命令 22
3.1 cron和crontab 22
3.1.1 crontab的域 22
3.1.2 crontab條目舉例 23
3.1.3 crontab命令選項 23
3.1.4 創建一個新的crontab檔案 24
3.1.5 列出crontab檔案 24
3.1.6 編輯crontab檔案 24
3.1.7 刪除crontab檔案 25
3.1.8 恢復丟失的crontab檔案 25
3.2 at命令 25
3.2.1 使用at命令提交命令或腳本 26
3.2.2 列出所提交的作業 27
3.2.3 清除一個作業 27
3.3 &命令 27
3.3.1 向後台提交命令 28
3.3.2 用ps命令查看進程 28
3.3.3 殺死後台進程 28
3.4 nohup命令 29
3.4.1使用nohup命令提交作業 29
3.4.2 一次提交幾個作業 29
3.5 小結 30
第4章 檔案名稱置換 31
4.1 使用* 31
4.2 使用? 32
4.3 使用[...]和[!...] 32
4.4 小結 33
第5章 shell輸入與輸出 34
5.1 echo 34
5.2 read 35
5.3 cat 37
5.4 管道 38
5.5 tee 39
5.6 標準輸入、輸出和錯誤 40
5.6.1 標準輸入 40
5.6.2 標準輸出 40
5.6.3 標準錯誤 40
5.7 檔案重定向 40
5.7.1 重定向標準輸出 41
5.7.2 重定向標準輸入 42
5.7.3 重定向標準錯誤 42
5.8 結合使用標準輸出和標準錯誤 43
5.9 合併標準輸出和標準錯誤 43
5.10 exec 44
5.11 使用檔案描述符 44
5.12 小結 45
第6章 命令執行順序 46
6.1 使用&& 46
6.2 使用|| 46
6.3 用()和{ }將命令結合在一起 47
6.4 小結 48
第二部分 文本過濾
第7章正則表達式介紹 49
7.1使用句點匹配單字元 50
7.2 在行首以^匹配字元串或字元序列 50
7.3 在行尾以$匹配字元串或字元 51
7.4 使用*匹配字元串中的單字元或其重複
序列 51
7.5 使用\禁止一個特殊字元的含義 52
7.6 使用[]匹配一個範圍或集合 52
7.7 使用\{\}匹配模式結果出現的次數 53
7.8 小結 55
第8章 grep家族 56
8.1 grep 57
8.1.1 雙引號引用 57
8.1.2 grep選項 57
8.1.3 查詢多個檔案 57
8.1.4 行匹配 57
8.1.5 行數 58
8.1.6 顯示非匹配行 58
8.1.7 精確匹配 58
8.1.8 大小寫敏感 58
8.2 grep和正則表達式 58
8.2.1 模式範圍 59
8.2.2 不匹配行首 59
8.2.3 設定大小寫 59
8.2.4 匹配任意字元 59
8.2.5 日期查詢 59
8.2.6 範圍組合 60
8.2.7 模式出現機率 60
8.2.8 使用grep匹配“與”或者“或”模式 61
8.2.9 空行 61
8.2.10 匹配特殊字元 61
8.2.11 查詢格式化檔案名稱 61
8.2.12 查詢IP位址 61
8.3 類名 62
8.4 系統grep命令 62
8.4.1 目錄 63
8.4.2 passwd檔案 63
8.4.3 使用ps命令 63
8.4.4 對一個字元串使用grep 64
8.5 egrep 64
8.6 小結 65
第9章 AWK介紹 66
9.1 調用awk 66
9.2 awk腳本 67
9.2.1 模式和動作 67
9.2.2 域和記錄 67
9.2.3 awk中正則表達式及其操作 70
9.2.4 元字元 70
9.2.5 條件操作符 70
9.2.6 awk內置變數 73
9.2.7 NF、NR和FILENAME 74
9.2.8 awk操作符 75
9.2.9 內置的字元串函式 78
9.2.10 字元串禁止序列 80
9.2.11 awk輸出函式printf 81
9.2.12 printf修飾符 81
9.2.13 awk數組 86
9.3 小結 88
第10章 sed 用法介紹 89
10.1 sed怎樣讀取數據 89
10.2 調用sed 89
10.2.1 保存sed輸出 90
10.2.2 使用sed在檔案中查詢文本的方式 90
10.2.3 基本sed編輯命令 90
10.3 sed和正則表達式 91
10.4 基本sed編程舉例 91
10.4.1 使用p(rint)顯示行 91
10.4.2 列印範圍 91
10.4.3 列印模式 92
10.4.4 使用模式和行號進行查詢 92
10.4.5 匹配元字元 92
10.4.6 顯示整個檔案 92
10.4.7 任意字元 92
10.4.8 首行 92
10.4.9 最後一行 93
10.4.10 列印行號 93
10.4.11 附加文本 93
10.4.12 創建sed腳本檔案 94
10.4.13 插入文本 94
10.4.14 修改文本 95
10.4.15 刪除文本 96
10.4.16 替換文本 96
10.5 使用替換修改字元串 97
10.6 將sed結果寫入檔案命令 97
10.7 從檔案中讀文本 98
10.8 匹配後退出 98
10.9 顯示檔案中的控制字元 99
10.10 使用系統sed 99
10.10.1 處理控制字元 99
10.10.2 處理報文輸出 101
10.10.3 去除行首數字 101
10.10.4 附加文本 102
10.10.5 從shell向sed傳值 102
10.10.6 從sed輸出中設定shell變數 102
10.11 快速一行命令 102
10.12 小結 103
第11章 合併與分割 104
11.1 sort用法 104
11.1.1 概述 104
11.1.2 sort選項 104
11.1.3 保存輸出 105
11.1.4 sort啟動方式 105
11.1.5 sort對域的參照方式 105
11.1.6 檔案是否已分類 105
11.1.7 基本sort 106
11.1.8 sort分類求逆 106
11.1.9 按指定域分類 106
11.1.10 數值域分類 106
11.1.11 唯一性分類 107
11.1.12 使用k的其他sort方法 108
11.1.13 使用k做分類鍵排序 108
11.1.14 指定sort序列 108
11.1.15 pos用法 108
11.1.16 使用head和tail將輸出分類 109
11.1.17 awk使用sort輸出結果 109
11.1.18 將兩個分類檔案合併 110
11.2 系統sort 110
11.3 uniq用法 111
11.4 join用法 112
11.5 cut用法 114
11.5.1 使用域分隔設定 115
11.5.2 剪下指定域 115
11.6 paste用法 116
11.6.1 指定列 116
11.6.2 使用不同的域分隔設定 116
11.6.3 paste命令管道輸入 117
11.7 split用法 117
11.8 小結 118
第12章 tr用法 119
12.1 關於tr 119
12.1.1 字元範圍 119
12.1.2 保存輸出 120
12.1.3 去除重複出現的字元 120
12.1.4 刪除空行 120
12.1.5 大寫到小寫 121
12.1.6 小寫到大寫 121
12.1.7 刪除指定字元 121
12.1.8 轉換控制字元 122
12.1.9 快速轉換 122
12.1.10 匹配多於一個字元 123
12.2 小結 123
第三部分 登錄環境
第13章 登錄環境 125
13.1 /etc/profile 125
13.2 用戶的$HOME.profile 128
13.3 stty用法 129
13.4 創建.logout檔案 131
13.5 小結 131
第14章 環境和shell變數 132
14.1 什麼是shell變數 132
14.2 本地變數 132
14.2.1 顯示變數 133
14.2.2 清除變數 133
14.2.3 顯示所有本地shell變數 133
14.2.4 結合變數值 134
14.2.5 測試變數是否已經設定 134
14.2.6 使用變數來保存系統命令參數 135
14.2.7 設定唯讀變數 135
14.3 環境變數 136
14.3.1 設定環境變數 136
14.3.2 顯示環境變數 136
14.3.3 清除環境變數 137
14.3.4 嵌入shell變數 137
14.3.5 其他環境變數 139
14.3.6 set命令 140
14.3.7 將變數導出到子進程 140
14.4 位置變數參數 141
14.4.1 在腳本中使用位置參數 142
14.4.2 向系統命令傳遞參數 142
14.4.3 特定變數參數 143
14.4.4 最後的退出狀態 144
14.5 小結 145
第15章 引號 146
15.1 引用必要性 146
15.2 雙引號 146
15.3 單引號 147
15.4 反引號 147
15.5 反斜線 148
15.6 小結 149
第四部分 基礎shell編程
第16章 shell腳本介紹 151
16.1 使用shell腳本的原因 151
16.2 腳本內容 151
16.3 運行一段腳本 152
16.4 小結 153
第17章 條件測試 154
17.1 測試檔案狀態 154
17.2 測試時使用邏輯操作符 155
17.3 字元串測試 155
17.4 測試數值 156
17.5 expr用法 157
17.5.1 增量計數 158
17.5.2 數值測試 158
17.5.3 模式匹配 158
17.6 小結 159
第18章 控制流結構 160
18.1 退出狀態 160
18.2 控制結構 160
18.2.1 流控制 161
18.2.2 循環 161
18.3 if then else語句 161
18.3.1 簡單的if語句 162
18.3.2 變數值測試 162
18.3.3 grep輸出檢查 163
18.3.4 用變數測試grep輸出 163
18.3.5 檔案拷貝輸出檢查 164
18.3.6 當前目錄測試 164
18.3.7 檔案許可權測試 165
18.3.8 測試傳遞到腳本中的參數 165
18.3.9 決定腳本是否為互動模式 165
18.3.10 簡單的if else語句 166
18.3.11變數設定測試 166
18.3.12 檢測運行腳本的用戶 166
18.3.13 將腳本參數傳入系統命令 167
18.3.14 null:命令用法 167
18.3.15 測試目錄創建結果 168
18.3.16 另一個拷貝實例 169
18.3.17 多個if語句 169
18.3.18 測試和設定環境變數 169
18.3.19 檢測最後命令狀態 170
18.3.20 增加和檢測整數值 171
18.3.21 簡單的安全登錄腳本 172
18.3.22 elif用法 173
18.3.23 使用elif進行多條件檢測 173
18.3.24 多檔案位置檢測 174
18.4 case語句 175
18.4.1 簡單的case語句 175
18.4.2 對匹配模式使用| 176
18.4.3 提示鍵入y或n 177
18.4.4 case與命令參數傳遞 177
18.4.5 捕獲輸入並執行空命令 178
18.4.6 預設變數值 179
18.5 for循環 180
18.5.1 簡單的for循環 181
18.5.2 列印字元串列表 181
18.5.3 對for循環使用ls命令 181
18.5.4 對for循環使用參數 182
18.5.5 使用for循環連線伺服器 183
18.5.6 使用for循環備份檔案 183
18.5.7 多檔案轉換 183
18.5.8 多sed刪除操作 184
18.5.9 循環計數 184
18.5.10 for循環和本地文檔 184
18.5.11 for循環嵌入 185
18.6 until循環 186
18.6.1 簡單的until循環 186
18.6.2 監視檔案 187
18.6.3 監視磁碟空間 187
18.7 while循環 188
18.7.1 簡單的while循環 188
18.7.2 使用while循環讀鍵盤輸入 188
18.7.3 用while循環從檔案中讀取數據 189
18.7.4 使用IFS讀檔案 189
18.7.5 帶有測試條件的檔案處理 190
18.7.6 掃描檔案行來進行數目統計 191
18.7.7 每次讀一對記錄 193
18.7.8 忽略#字元 193
18.7.9 處理格式化報表 194
18.7.10 while循環和檔案描述符 196
18.8 使用break和continue控制循環 197
18.8.1 break 197
18.8.2 跳出case語句 197
18.8.3 continue 197
18.8.4 瀏覽檔案行 198
18.9 選單 199
18.10 小結 201
第19章 shell函式 202
19.1 在腳本中定義函式 203
19.2 在腳本中使用函式 203
19.3 向函式傳遞參數 203
19.4 從調用函式中返回 203
19.5 函式返回值測試 204
19.6 在shell中使用函式 204
19.7 創建函式檔案 204
19.8 定位檔案 205
19.9 檢查載入函式 205
19.10 執行shell函式 205
19.10.1 刪除shell函式 206
19.10.2 編輯shell函式 206
19.10.3 函式舉例 207
19.10.4 將函式集中在一起 219
19.11 函式調用 219
19.11.1 在腳本中調用函式 219
19.11.2 從函式檔案中調用函式 220
19.12 定位檔案不只用於函式 222
19.13 小結 223
第20章 向腳本傳遞參數 224
20.1 shift命令 225
20.1.1 shift命令簡單用法 225
20.1.2 命令行輸入的最後一個參數 225
20.1.3 使用shift處理檔案轉換 226
20.2 getopts 229
20.2.1 getopts腳本實例 229
20.2.2 getopts使用方式 231
20.2.3 使用getopts指定變數取值 231
20.2.4 訪問取值方式 232
20.2.5 使用getopts處理檔案轉換 233
20.3 小結 235
第21章 創建螢幕輸出 236
21.1 tput用法 236
21.1.1 字元串輸出 236
21.1.2 數字輸出 237
21.1.3 布爾輸出 237
21.2 tput用法 237
21.2.1 設定tput命令 237
21.2.2 使用布爾輸出 237
21.2.3 在腳本中使用tput 237
21.2.4 產生轉義序列 238
21.2.5 游標位置 239
21.2.6 在螢幕中心位置顯示文本 240
21.2.7 查找終端屬性 240
21.2.8 在腳本中使用功能鍵 241
21.2.9 使用顏色 242
21.2.10 產生顏色 243
21.2.11 創建精緻選單 246
21.3 小結 251
第22章 創建螢幕輸入 252
22.1 增加記錄 252
22.2 刪除記錄 262
22.3 修改記錄 266
22.4 查看記錄 270
22.5 小結 273
第23章 調試腳本 274
23.1 一般錯誤 274
23.1.1 循環錯誤 274
23.1.2 典型的漏寫引號 274
23.1.3 測試錯誤 274
23.1.4 字元大小寫 275
23.1.5 for循環 275
23.1.6 echo 275
23.2 set命令 275
23.3 小結 276
第24章 shell嵌入命令 277
24.1 shell嵌入命令完整列表 277
24.1.1 pwd 277
24.1.2 set 278
24.1.3 times 278
24.1.4 type 278
24.1.5 ulimit 279
24.1.6 wait 279
24.2 小結 279
第五部分 高級shell編程技巧
第25章 深入討論<< 281
25.1 快速創建一個檔案 281
25.2 快速創建列印文檔 281
25.3 自動選擇選單 282
25.4 自動ftp傳輸 283
25.5 訪問資料庫 286
25.6 小結 288
第26章 shell 工具 289
26.1 創建保存信息的檔案 289
26.1.1 使用date命令創建日誌檔案 289
26.1.2 創建唯一的臨時檔案 290
26.2 信號 291
26.2.1 殺死一個進程 292
26.2.2 檢測信號 293
26.3 trap 294
26.3.1 捕獲信號並採取相應的行動 294
26.3.2 捕獲信號並採取行動的另
一個例子 295
26.3.3 鎖住終端 297
26.3.4 忽略信號 298
26.4 eval 300
26.4.1 執行含有字元串的命令 300
26.4.2 給每個值一個變數名 301
26.5 logger命令 302
26.5.1 使用logger命令 303
26.5.2 在腳本中使用logger命令 303
26.6 小結 305
第27章 幾個腳本例子 306
27.1 pingall 306
27.2 backup_gen 306
27.3 del.lines 312
27.4 access.deny 313
27.5 logroll 316
27.6 nfsdown 317
27.7 小結 317
第28章 運行級別腳本 318
28.1 怎么知道系統中是否含有運行
級別目錄 318
28.2 確定當前的運行級別 319
28.3 快速熟悉inittab 319
28.4 運行級別 320
28.4.1 各種運行級別 321
28.4.2 運行級別腳本的格式 321
28.4.3 安裝運行級別腳本 322
28.5 使用inittab來啟動應用程式 323
28.6 啟動和停止服務的其他方法 324
28.7 小結 324
第29章 cgi腳本 325
29.1 什麼是Web頁面? 325
29.2 cgi 325
29.3 連線Web伺服器 326
29.4 cgi和HTM腳本 326
29.4.1 基本cgi腳本 326
29.4.2 顯示shell命令輸出 328
29.4.3 使用SSI 330
29.4.4 訪問計數器 330
29.4.5 使用一個連結來顯示當前Web
環境變數 332
29.4.6 其他常用的環境變數 334
29.5 get和post方法簡介 335
29.5.1 get方法 335
29.5.2 post方法 340
29.5.3 填充列表項 347
29.5.4 自動刷新頁面 348
29.6 小結 349
附錄 常用shell命令 350

相關詞條

相關搜尋

熱門詞條

聯絡我們