●出版說明
前言
第1章 概述
1.1 為什麼要學習Linux shell腳本
1.2 什麼是shell
1.3 什麼是shell腳本
1.4 為什麼要學習Bash
1.5 Bash學習環境的準備
1.5.1 Linux的準備
1.5.2 Cygwin工具
1.5.3 VMware與Linux虛擬機
1.6 Linux命令格式簡介
1.7 如何獲得Linux命令的幫助
第2章 Linux基礎知識與常用命令
2.1 Linux的文件與目錄結構
2.2 查看文件清單命令ls
2.3 瀏覽文件命令cat、more、less、head和tail
2.4 文件統計命令wc
2.5 改變當前工作目錄命令cd
2.6 創建目錄命令mkdir
2.7 復制命令cp
2.8 重命名或移動命令mv
2.9 創建符號鏈接和硬鏈接命令ln
2.10 顯示當前目錄命令pwd
2.11 產生空文件或者改變文件時間戳命令touch
2.12 查看賬戶名及其所屬組的命令whoami、id和groups
2.13 文件與目錄的權限
2.14 改變權限命令chmod
2.15 SUID與SGID以及粘滯位
2.15.1 SUID
2.15.2 SGID
2.15.3 粘滯位
2.16 查看文件的三種時間
2.17 刪除命令rm與rmdir
2.18 編輯文件命令vi
2.19 用於顯示的命令echo
2.20 查看文件類型命令file
2.21 顯示樹狀目錄信息命令tree
2.22 查找命令find
第3章 Bash內置命令與環境簡介
3.1 內置命令與外部命令
3.2 認識Bash環境
3.2.1 命令行提示PS1
3.2.2 搜索路徑PATH
3.2.3 設置和取消別名命令alias和unalias
3.2.4 修改.bashrc—設置自己的環境
3.3 權限掩碼命令umask
3.4 source命令和點命令
3.5 編寫並運行第一個腳本
3.6 命令解釋順序與命令類型的查詢
3.6.1 命令的解釋順序
3.6.2 改變命令解釋順序的三條內置命令
3.6.3 命令類型的查詢
3.7 命令的退出狀態以及命令true和false
3.8 管道
3.9 輸入輸出重定向
3.9.1 標準輸入和標準輸出
3.9.2 輸入輸出重定向與輸出追加重定向
3.9.3 預防輸出重定向覆蓋舊文件
3.9.4 標準錯誤輸出與“黑洞”
3.9.5 同時把結果輸出至標準輸出與文件的命令tee
3.10 exec命令與文件描述符
3.11 有關命令的進一步討論
3.11.1 一行多命令
3.11.2 將命令放在後臺執行
3.11.3 命令行的續行
3.11.4 命令的補齊與命令歷史
3.11.5 操作名字含空格的文件
3.11.6 操作名字首字母為減號的文件
3.11.7 Windows與Linux文件格式的互轉
3.11.8 小括號與大括號中的命令
3.11.9 子shell
第4章 變量與數組
4.1 變量的定義與清除
4.2 字符串定義及單雙引號與大括號的使用
4.3 將命令執行結果賦給變量—反引號與$()
4.4 鍵盤輸入變量值—內置命令read
4.5 整型變量運算
4.6 浮點運算
4.7 定義隻讀變量命令readonly和declare -r
4.8 定義整型變量命令declare -i
4.9 數組
4.10 關聯數組
4.11 導出變量命令export和declare -x
4.12 declare命令總結
4.13 環境變量與特殊變量
4.14 內置變量
4.15 計算表達式值的命令expr
4.16 變量測試及其相應的賦值
4.17 字符串操作
4.17.1 Bash內置的字符串操作
4.17.2 用命令expr處理字符串
第5章 條件流程控制
5.1 條件判斷與test命令
5.1.1 整型數關繫運算
5.1.2 字符串關繫運算
5.1.3 文件屬性條件判斷
5.1.4 邏輯的與或非
5.1.5 與或非的優先級
5.1.6 雙中括號格式
5.1.7 在雙小括號裡面進行整數比較
5.1.8 命令的與或非
5.1.9 判斷變量是否定義
5.2 條件測試結構if
5.3 if-else結構
5.4 if-elif結構
5.5 分情況選擇處理—case命令
5.6 命令exit與if及case命令的配合
5.7 用here文檔與case命令生成菜單
5.8 null命令
第6章 循環
6.1 for循環
6.2 算術for循環
6.3 while循環
6.4 until循環
6.5 用break和continue控制循環
6.6 用命令shift控制循環
6.7 選擇命令select
6.8 循環命令與I/O重定向及管道的配合
6.9 腳本的選項與參數
6.9.1 命令shift
6.9.2 命令getopts
第7章 函數
7.1 函數定義
7.2 給函數傳遞參數
7.3 函數的局部與全局變量
7.4 當前的函數名FUNCNAME
7.5 在命令行執行函數
7.6 查看當前shell的函數定義
7.7 選項-f與函數的導出、清除與隻讀設置
7.8 返回命令return
7.9 遞歸函數
第8章 正則表達式與文本處理
8.1 文件名替換
8.1.1 多字符替換*
8.1.2 單字符替換?
8.1.3 範圍替換[]與[!]
8.2 正則表達式與grep
8.2.1 過濾器grep
8.2.2 擴展的egrep
8.2.3 IX字符類
8.2.4 Bash擴展模式匹配
8.3 剪取內容命令cut
8.4 合並相應行的命令paste
8.5 轉換或刪除字符命令tr
8.6 排序命令sort
8.7 流編輯器sed
8.7.1 替換命令s
8.7.2 其他命令
8.7.3 一行多條命令與保存匹配&
8.7.4 sed的退出狀態
8.7.5 sed腳本
8.8 文本處理工具awk
8.9 格式化打印命令printf
第9章 進程與作業
9.1 查看進程命令ps
9.2 掛起進程〈Ctrl+Z〉鍵
9.3 前臺fg與後臺bg
9.4 發送信號命令kill
9.5 等待命令wait
9.6 捕獲信號命令trap
9.7 移除作業的命令disown
9.8 暫停shell的命令suspend
第10章 高級話題
10.1 二次掃描命令eval
10.2 目錄棧操作命令pushd、popd與dirs
10.3 波浪號擴展
10.4 (非)登錄及(非)交互shell
10.5 Bash shell選項
10.6 用命令set設置shell
10.7 用命令shopt設置shell
10.8 終端行設置命令stty
10.9 不在腳本和函數內使用別名
10.10 Bash調試
10.11 並行命令parallel
10.12 模擬旋轉型進度指示
10.13 刪除文件空行
10.14 完善while-shift循環
附錄 Bash安全漏洞shellshock
參考文獻