linux与shell编程指南,LINUX与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/guid7
1.6.1 ? 為什么要使用suid/guid8
1.6.2 ? 設置suid/guid的例子8
1.7 ? chown和chgrp9
1.7.1 ? chown舉例9
1.7.2 ? chgrp舉例9
1.7.3 ? 找出你所屬于的用戶組9
1.7.4 ? 找出其他用戶所屬于的組10
1.8 ? umask10
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和xargs14
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 ? xargs20
2.3 ? 小結21
第3章 ? 后臺執行命令22
3.1 ? cron和crontab22
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 ? echo34
5.2 ? read35
5.3 ? cat37
5.4 ? 管道38
5.5 ? tee39
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 ? exec44
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 ? grep57
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 ? 對一個字符串使用grep64
8.5 ? egrep64
8.6 ? 小結65
第9章 ? AWK介紹66
9.1 ? 調用awk66
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和FILENAME74
9.2.8 ? awk操作符75
9.2.9 ? 內置的字符串函數78
9.2.10 ? 字符串屏蔽序列80
9.2.11 ? awk輸出函數printf81
9.2.12 ? printf修飾符81
9.2.13 ? awk數組86
9.3 ? 小結88
第10章 ? sed 用法介紹89
10.1 ? sed怎樣讀取數據89
10.2 ? 調用sed89
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 ? 使用系統sed99
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 ? 基本sort106
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 ? 系統sort110
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 ? 關于tr119
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/profile125
13.2 ? 用戶的$HOME.profile128
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或n177
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 ? break197
18.8.2 ? 跳出case語句197
18.8.3 ? continue197
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 ? getopts229
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 ? 在腳本中使用tput237
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 ? echo275
23.2 ? set命令275
23.3 ? 小結276
第24章 ? shell嵌入命令277
24.1 ? shell嵌入命令完整列表277
24.1.1 ? pwd277
24.1.2 ? set278
24.1.3 ? times278
24.1.4 ? type278
24.1.5 ? ulimit279
24.1.6 ? wait279
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 ? trap294
26.3.1 ? 捕獲信號并采取相應的行動294
26.3.2 ? 捕獲信號并采取行動的另
一個例子295
26.3.3 ? 鎖住終端297
26.3.4 ? 忽略信號298
26.4 ? eval300
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 ? pingall306
27.2 ? backup_gen306
27.3 ? del.lines312
27.4 ? access.deny313
27.5 ? logroll316
27.6 ? nfsdown317
27.7 ? 小結317
第28章 ? 運行級別腳本318
28.1 ? 怎么知道系統中是否含有運行
級別目錄318
28.2 ? 確定當前的運行級別319
28.3 ? 快速熟悉inittab319
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 ? cgi325
29.3 ? 連接Web服務器326
29.4 ? ?cgi和HTM腳本326
29.4.1 ? 基本cgi腳本326
29.4.2 ? 顯示shell命令輸出328
29.4.3 ? 使用SSI330
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
總結
以上是生活随笔為你收集整理的linux与shell编程指南,LINUX与UNIX SHELL编程指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux pprof工具安装,goog
- 下一篇: linux raw 开机启动,Linux