Shell腳本編程訣竅——適用於Linux,Bash等

Shell腳本編程訣竅——適用於Linux,Bash等

《Shell腳本編程訣竅——適用於Linux,Bash等》是2012年9月清華大學出版社出版的圖書,作者是Steve Parker。

基本介紹

  • 中文名:Shell腳本編程訣竅——適用於Linux,Bash等
  • 作者:Steve Parker
  • 出版時間:2012年9月
  • 出版社清華大學出版社
  • ISBN:9787302297819
  • 定價:68 元
內容簡介,圖書目錄,

內容簡介

shell是與Unix和Linux系統通信的主要方法,並通過使簡單到中間任務的自動化,提供了一種直接的編程手段。在《Shell腳本編程訣竅——適用於Linux、Bash等》中,精通Unix、Linux與shell腳本編程的專家Steve Parker分享了一組shell實用腳本編程訣竅。這些實用腳本編程訣竅可以拿來直接使用,或者很容易對其修改以適應各種環境與條件。本書一開始介紹了一些理論與原理,並且每個討論的話題都包含了具有深刻意義的示例。介紹完理論之後開始深入討論shell編程,內容涵蓋所有的Unix種類,但主要集中於Linux與Bash shell。至始至終,本書都在介紹一些可信的、用於實際用途的實用腳本編程訣竅,以及用來快速上手的工具。

圖書目錄

第Ⅰ部分 基本概念
第1章 Unix、GNU和Linux的歷史 3
1.1 Unix 3
1.1.1 “一切皆檔案”與管道 5
1.1.2 BSD 6
1.2 GNU 7
1.3 Linux 10
1.4 本章小結 12
第2章 環境的搭建 13
2.1 作業系統 13
2.1.1 GNU/Linux 13
2.1.2 BSD 15
2.1.3 商業Unix 15
2.1.4 Microsoft Windows 15
2.2 編輯器 16
2.2.1 圖形化文本編輯器 16
2.2.2 終端模擬器 19
2.2.3 非圖形化文本編輯器 19
2.3 系統環境的搭建 21
2.3.1 shell配置檔案 21
2.3.2 別名 23
2.3.3 vim設定 27
2.4 本章小結 28
第3章 變數 29
3.1 使用變數 29
3.1.1 類型 30
3.1.2 變數的賦值 30
3.1.3 位置參數 34
3.1.4 返回碼 38
3.1.5 刪除變數 41
3.2 預定義變數和標準變數 42
3.2.1 BASH_ENV 43
3.2.2 BASHOPTS 43
3.2.3 SHELLOPTS 44
3.2.4 BASH_COMMAND 46
3.2.5 BASH_SOURCE、FUNCNAME、LINENO 和BASH_LINENO 47
3.2.6 SHELL 51
3.2.7 HOSTNAME 和HOSTTYPE 51
3.2.8 工作 51
3.2.9 PIPESTATUS 51
3.2.10 TIMEFORMAT 52
3.2.11 PPID 53
3.2.12 RANDOM 54
3.2.13 REPLAY 54
3.2.14 SECONDS 55
3.2.15 BASH_XTRACEFD 55
3.2.16 GLOBIGNORE 57
3.2.17 HOME 58
3.2.18 IFS 58
3.2.19 PATH 59
3.2.20 TMOUT 60
3.2.21 TMPDIR 61
3.2.22 用戶標識變數 61
3.3 本章小結 62
第4章 通配符擴展 63
4.1 檔案名稱擴展(globbing) 63
4.1.1 bash的檔案名稱擴展特性 66
4.1.2 shell選項 67
4.2 正則表達式和引用 71
4.2.1 正則表達式概述 72
4.2.2 引用 73
4.3 本章小結 77
第5章 條件執行 79
5.1 if/then 79
5.2 else 80
5.3 elif 81
5.4 test([) 83
5.4.1 測試標誌 84
5.4.2 檔案比較測試 91
5.4.3 字元串比較測試 92
5.4.4 正則表達式測試 94
5.4.5 數值測試 97
5.4.6 組合測試 98
5.5 case 101
5.6 本章小結 105
第6章 使用循環進行流控制 107
6.1 for循環 107
6.1.1 for循環的使用時機 108
6.1.2 向for提供數據 108
6.1.3 C風格的for循環 114
6.2 while循環 115
6.2.1 while循環的使用時機 116
6.2.2 while循環的用法 116
6.3 嵌套循環 122
6.4 循環的退出與繼續 122
6.5 帶case的while循環 126
6.6 until循環 127
6.7 select循環 129
6.8 本章小結 134
第7章 變數(續) 135
7.1 變數的用法 135
7.1.1 變數的類型 137
7.1.2 變數的長度 138
7.1.3 特殊字元串操作符 140
7.1.4 按照長度剪裁變數字元串 141
7.1.5 從字元串末尾剪裁 143
7.1.6 使用模式剪裁字元串 143
7.2 字元串查找 147
7.2.1 查找與替換 147
7.2.2 模式替換 149
7.2.3 模式刪除 149
7.2.4 大小寫轉換 149
7.3 提供默認值 150
7.4 間接操作 153
7.5 使用source命令載入變數 155
7.6 本章小結 156
第8章 函式和庫 157
8.1 函式 157
8.1.1 函式定義 157
8.1.2 函式輸出 158
8.1.3 寫入檔案 160
8.1.4 整個函式的輸出重定向 163
8.1.5 函式陷阱 167
8.1.6 遞歸函式 168
8.2 變數的作用域 173
8.3 庫 177
8.3.1 庫的創建與訪問 179
8.3.2 庫的結構 179
8.3.3 網路配置庫 183
8.3.4 庫的使用 187
8.4 getopts 187
8.4.1 錯誤處理 190
8.4.2 函式中的getopts 191
8.5 本章小結 194
第9章 數組 195
9.1 數組的賦值 195
9.1.1 一次一個 196
9.1.2 一次全部 196
9.1.3 按索引 197
9.1.4 從源中一次全部讀取 197
9.1.5 從輸入讀取 199
9.2 數組的訪問 201
9.2.1 用索引訪問 201
9.2.2 數組的長度 202
9.2.3 用變數索引訪問 203
9.2.4 從數組中選擇元素 205
9.2.5 顯示整個數組 206
9.3 關聯數組 206
9.4 數組操作 207
9.4.1 數組的複製 207
9.4.2 向數組追加元素 209
9.4.3 從數組中刪除元素 211
9.5 高級技術 212
9.6 本章小結 213
第10章 進程 215
10.1 ps命令 215
10.1.1 ps顯示的行寬 216
10.1.2 精確分析進程表 217
10.2 killall 219
10.3 /proc虛擬檔案系統 220
10.4 prtstat 221
10.5 I/O重定向 222
10.5.1 向已有檔案追加輸出 224
10.5.2 重定向的許可權 225
10.6 exec 225
10.6.1 使用exec替換已有程式 225
10.6.2 使用exec修改重定向 226
10.7 管道 233
10.8 後台處理 233
10.8.1 wait命令 234
10.8.2 使用nohup防止進程掛起 235
10.9 /proc和/sys的其他特性 238
10.9.1 /proc/version 238
10.9.2 SysRq 238
10.9.3 /proc/meminfo 240
10.9.4 /proc/cpuinfo 241
10.9.5 /sys 241
10.9.6 /sys/devices/system/node 248
10.9.7 sysctl 250
10.10 本章小結 250
第11章 shell的選擇與使用 251
11.1 Bourne shell 251
11.2 Kornshell 252
11.3 C shell 252
11.4 Tenex C shell 252
11.5 Z shell 253
11.6 Bourne Again Shell 253
11.7 Debian Almquist Shell 253
11.8 點檔案 254
11.8.1 互動式登錄shell 255
11.8.2 互動式非登錄shell 256
11.8.3 非互動式shell 257
11.8.4 登出腳本 257
11.9 命令提示符 257
11.9.1 PS1提示符 257
11.9.2 PS2、PS3和PS4提示符 259
11.10 別名 260
11.10.1 節省時間 260
11.10.2 修改行為 261
11.11 history命令 262
11.11.1 回調命令 262
11.11.2 搜尋歷史 263
11.11.3 時間戳 263
11.12 Tab補全 265
11.12.1 ksh 265
11.12.2 tcsh 266
11.12.3 zsh 266
11.12.4 bash 267
11.13 後台、前台與作業控制 268
11.13.1 後台進程 268
11.13.2 作業控制 268
11.13.3 nohup和disown 271
11.14 本章小結 272
第Ⅱ部分 系統工具使用與 擴展訣竅
第12章 檔案操作 275
12.1 stat 275
12.2 cat 277
12.2.1 行號標記 277
12.2.2 處理空白行 278
12.2.3 非列印字元 279
12.3 cat的反轉詞tac 280
12.4 重定向 281
12.4.1 重定向輸出:單個大於符號(>) 281
12.4.2 追加:雙大於符號(>>) 282
12.4.3 輸入重定向:單個小於符號(<) 284
12.4.4 here文檔:雙小於符號(<< EOF) 286
12.5 dd 289
12.6 df 291
12.7 mktemp 292
12.8 join 293
12.9 install 294
12.10 grep 296
12.10.1 grep標誌 297
12.10.2 grep正則表達式 298
12.11 split 299
12.12 tee 301
12.13 touch 302
12.14 find 303
12.15 find -exec 306
12.16 本章小結 310
第13章 文本操作 311
13.1 cut 311
13.2 echo 312
13.2.1 dial1腳本 312
13.2.2 dial2腳本 315
13.3 fmt 316
13.4 head和tail 319
13.4.1 獎牌腳本 319
13.4.2 世界盃腳本 320
13.5 od 324
13.6 paste 328
13.7 pr 331
13.8 printf 332
13.9 shuf 334
13.9.1 擲骰子 334
13.9.2 發牌 335
13.9.3 旅行線路 336
13.10 sort 338
13.10.1 按照鍵進行排序 338
13.10.2 按照日期與時間對日誌檔案排序 340
13.10.3 對人類可讀的數值進行排序 342
13.11 tr 343
13.12 uniq 346
13.13 wc 348
13.14 本章小結 349
第14章 系統管理工具 351
14.1 basename 351
14.2 date 353
14.2.1 date的典型用法 353
14.2.2 date的一些更有趣的用法 357
14.3 dirname 358
14.4 factor 360
14.5 id、groups與getent 362
14.6 logger 365
14.7 md5sum 366
14.8 mkfifo 368
14.8.1 主與從 369
14.8.2 顛倒順序 371
14.9 聯網 373
14.9.1 telnet 373
14.9.2 netcat 374
14.9.3 ping 376
14.9.4 編寫ssh與scp腳本 378
14.9.5 OpenSSL 381
14.10 nohup 387
14.11 seq 388
14.11.1 整數序列 389
14.11.2 浮點數序列 391
14.12 sleep 391
14.13 timeout 392
14.13.1 關閉腳本 394
14.13.2 網路逾時 396
14.14 uname 398
14.15 uuencode 399
14.16 xargs 400
14.17 yes 403
14.18 本章小結 404
第Ⅲ部分 系統管理的實用腳本
第15章 shell特性 407
15.1 實用腳本15-1:安裝初始化腳本 407
15.1.1 用到的技術 407
15.1.2 概念 408
15.1.3 潛在的陷阱 408
15.1.4 腳本結構 408
15.1.5 腳本代碼 410
15.1.6 調用結果 411
15.1.7 小結 412
15.2 實用腳本15-2:RPM報告 412
15.2.1 用到的技術 412
15.2.2 概念 412
15.2.3 潛在的陷阱 413
15.2.4 腳本結構 413
15.2.5 腳本代碼 414
15.2.6 調用結果 417
15.2.7 小結 418
15.3 實用腳本15-3:postinstall腳本 418
15.3.1 用到的技術 418
15.3.2 概念 419
15.3.3 潛在的陷阱 419
15.3.4 腳本結構 420
15.3.5 腳本代碼 421
15.3.6 調用結果 423
15.3.7 小結 423
第16章 系統管理 425
16.1 實用腳本16-1:初始化腳本 425
16.1.1 用到的技術 426
16.1.2 概念 426
16.1.3 潛在的陷阱 427
16.1.4 腳本結構 428
16.1.5 腳本代碼 429
16.1.6 調用結果 430
16.1.7 小結 431
16.2 實用腳本16-2:CGI腳本 431
16.2.1 用到的技術 431
16.2.2 概念 431
16.2.3 潛在的陷阱 432
16.2.4 腳本結構 433
16.2.5 腳本代碼 436
16.2.6 調用結果 439
16.2.7 小結 442
16.3 實用腳本16-3:配置檔案 443
16.3.1 用到的技術 443
16.3.2 概念 443
16.3.3 潛在的陷阱 443
16.3.4 腳本結構 443
16.3.5 腳本代碼 444
16.3.6 調用結果 445
16.3.7 小結 445
16.4 實用腳本16-4:鎖 445
16.4.1 用到的技術 446
16.4.2 概念 446
16.4.3 潛在的陷阱 446
16.4.4 腳本結構 448
16.4.5 腳本代碼 450
16.4.6 調用結果 452
16.4.7 小結 455
第17章 演示 457
17.1 實用腳本17-1:太空遊戲 457
17.1.1 用到的技術 457
17.1.2 概念 457
17.1.3 潛在的陷阱 460
17.1.4 腳本結構 460
17.1.5 腳本代碼 461
17.1.6 調用結果 466
17.1.7 小結 468
第18章 數據存儲與檢索 469
18.1 實用腳本18-1:分析HTML 469
18.1.1 用到的技術 469
18.1.2 概念 469
18.1.3 潛在的陷阱 470
18.1.4 腳本結構 470
18.1.5 腳本代碼 471
18.1.6 調用結果 472
18.1.7 小結 474
18.2 實用腳本18-2:CSV格式化 474
18.2.1 用到的技術 474
18.2.2 概念 475
18.2.3 潛在的陷阱 475
18.2.4 腳本結構 475
18.2.5 腳本代碼 477
18.2.6 調用結果 479
18.2.7 小結 480
第19章 數值 481
19.1 實用腳本19-1:斐波那契數列 481
19.1.1 用到的技術 481
19.1.2 概念 482
19.1.3 潛在的陷阱 482
19.1.4 方法一的結構 483
19.1.5 方法一的腳本 483
19.1.6 方法一的調用結果 484
19.1.7 方法二的結構 484
19.1.8 方法二的腳本 485
19.1.9 方法二的調用結果 486
19.1.10 方法三的結構 487
19.1.11 方法三的腳本 488
19.1.12 方法三的調用結果 488
19.1.13 小結 490
19.2 實用腳本19-2:PXE啟動 490
19.2.1 用到的技術 490
19.2.2 概念 490
19.2.3 潛在的陷阱 491
19.2.4 腳本結構 491
19.2.5 腳本代碼 492
19.2.6 調用結果 495
19.2.7 小結 497
第20章 進程 499
20.1 實用腳本20-1:進程控制 499
20.1.1 用到的技術 499
20.1.2 概念 499
20.1.3 潛在的陷阱 501
20.1.4 腳本結構 501
20.1.5 腳本代碼 503
20.1.6 調用結果 509
20.1.7 小結 514
第21章 國際化 515
21.1 實用腳本21-1:國際化 515
21.1.1 用到的技術 516
21.1.2 概念 516
21.1.3 潛在的陷阱 517
21.1.4 腳本結構 518
21.1.5 腳本代碼 518
21.1.6 調用結果 522
21.1.7 小結 524
第Ⅳ部分 參考信息
附錄 補充材料 527
術語表 531
check!

熱門詞條

聯絡我們