推介服務:課堂錄影隨時睇
(在家觀看 = 0%,在校觀看 = 100%)
(在家觀看 = 0%,在校觀看 = 100%)
100% 在校觀看日期及時間:
自由選擇,點選以下地區觀看辦公時間及位置
不限:$1,980 (地點沒有限制)報名
課時: 12 小時
享用時期: 報讀日至 4 星期內,進度由您控制,可快可慢。
課堂錄影導師:Franco
在校免費試睇:首 1 小時,請致電以上地點與本中心職員預約。
本課程提供在校免費重睇及導師解答服務。
推介服務:課堂錄影隨時睇
(在家觀看 = 100%,在校觀看 = 0%)
(在家觀看 = 100%,在校觀看 = 0%)
100% 在家觀看日期及時間:
每天 24 小時全天候不限次數地觀看
學費:$1,980 報名 phone
電話:2332-6544
課時: 12 小時
享用時期: 報讀日至 4 星期內,進度由您控制,可快可慢。
課堂錄影導師:Franco
在校免費試睇:首 1 小時,請致電以上地點與本中心職員預約。
本課程提供導師解答服務。
Linux 是全球知名的作業系統,使用 Linux 的伺服器已經十分普遍。如何有效管理 Linux 成為 Linux 使用者需要面對的課題。而 Shell Script 就是有效管理 Linux 的利器。
Shell Script 是利用 Linux Shell 的功能所編寫的 Script (程式)。Shell Script 內透過使用指令、程式邏輯 (e.g. if then else, loops, etc.)、正規表示式 (Regular expression)、管線 (Pipe)、資料流重導向 (Redirection)、Sed (Stream editor)、Gawk (GNU Awk) 等技術達到 Linux 自動化的效果,令我們不再需要人手地處理一些重覆、笨拙和易錯的系統管理工作。
Shell Script 能自動化以下的工作:
- 自動化進行備份,並為每個備份加上準確的日期時間。
- 自動化執行 Linux 指令,例如執行指令以備份 MySQL 資料庫。
- 自動化在檔案 / 設定檔內新增、修改或移除文字或設定,例如在 apache2.conf (Apache2 網頁伺服器的其中一個設定檔) 內新增、修改或移除設定。
- 自動化進行檔案操作,例如為某個目錄的檔案先進行 N 次的過濾 (filter)、排序 (Sort)、然後為大量的檔案改名。
- 自動化監控 Linux,例如如果硬盤空間不足,便會發送電郵給管理員以及時解除危機。
- 取得用戶的輸入並針對用戶輸入作程式處理。
- 更多…
課程名稱: |
Shell Script Linux 自動化課程 - 簡稱:Shell Script Linux Training Course |
課程時數: | 12 小時 (共 4 堂) |
適合人士: | 已修讀 "Linux 安裝及基本管理課程" 或具有同等知識。學員無需要具有任何編寫程式的經驗和知識。 |
授課語言: | 以廣東話為主,輔以英語 |
課程筆記: | 本中心導師親自編寫中文為主筆記,而部份中文字附有英文對照。 |
課程名稱:Shell Script Linux 自動化課程 - 簡稱:Shell Script Linux Training Course |
1 Shell Script 簡介
2 Linux 的指令介面 (CLI, Command Line Interface)
2.1 使用指令介面 (CLI, Command Line Interface) 的時機
2.2 前景與背景執行
2.2.1 前景執行
2.2.2 背景執行
2.3 常用的指令
2.3.1 Manual page (man page)
2.3.2 touch
2.3.3 cat
2.3.4 more 與 less
2.3.4.1 more
2.3.4.2 less
2.3.5 head
2.3.6 tail
2.3.7 wc
2.3.8 pwd
2.3.9 mkdir
2.3.10 mv
2.3.11 rm
2.3.12 file
2.3.13 find
2.3.14 tar
2.3.14.1 打包與壓縮
2.3.14.2 檢視 tar 或 tar.gz 檔案的內容
2.3.14.3 拆包與解壓
2.3.15 free
2.3.16 df
2.3.17 !!
2.3.18 !$
2.4 指令的路徑
2.4.1 which
2.4.2 $PATH
2.4.3 執行 Linux 預設沒有提供的指令
2.4.3.1 在 $PATH 內新增路徑
2.4.3.2 在 Linux 內執行 Java 程式
2.5 環境變數
2.5.1 顯示所有環境變數
2.5.2 顯示個別的環境變數
2.5.3 使用環境變數
2.5.4 新增環境變數
2.5.5 取消環境變數
2.5.6 環境變數從何而來?
2.5.6.1 在系統層面設定環境變數
2.5.6.2 在用戶層面設定環境變數
2.6 標準輸入與標準輸出
2.6.1 標準輸入與 "<"
2.6.2 標準輸出與 ">"
2.6.3 標準輸出與 ">>"
2.6.4 "<<"
2.6.5 結合標準輸入與輸出
2.6.6 1>, 2> 及 &>>
2.6.6.1 1>
2.6.6.2 2>
2.6.6.3 &>>
2.7 管線 (Pipes)
2.7.1 管線的邏輯
2.7.2 wc
2.7.3 sort:預設排序
2.7.4 sort:進階排序
2.7.5 sort 與uniq
2.8 特殊字元、引號、大括號及正規表示式 (Regular Expression)
2.8.1 特殊字元
2.8.1.1 萬用字元
2.8.1.2 單一字元
2.8.1.3 跳脫字元
2.8.2 單引號與雙引號
2.8.2.1 單引號
2.8.2.2 雙引號
2.8.3 大括號
2.8.3.1 順序擴展 (第一部份)
2.8.3.2 順序擴展 (第二部份)
2.8.3.3 倒序擴展 (第一部份)
2.8.3.4 倒序擴展 (第二部份)
2.8.3.5 更多的例子
2.8.4 正規表示式 (Regular Expression)
2.8.4.1 開始
2.8.4.2 含有
2.8.4.3 結束
2.9 grep
2.9.1 只顯示成功比對的行數
2.9.2 相反
2.9.3 多個參數的比對 (OR)
2.9.4 多個參數的比對 (AND)
2.9.5 最少出現的次數
2.9.6 出現次數的範圍
2.9.7 不區分大小寫
2.10 參數代換
2.10.1 xargs
2.10.2 例子:將所有的 jar 檔案複製到指定的資料夾內
2.11 權限、擁有者及群組
2.11.1 權限
2.11.1.1 檔案類型
2.11.1.2 擁有者、群組及其他人的權限
2.11.1.3 了解權限
2.11.1.4 設定權限
2.11.2 擁有者及群組與 sudo
2.11.2.1 設定擁有者及群組
2.11.2.2 一般用戶在無需鍵入密碼的情況下取得特殊權限
2.11.2.2.1 sudo
2.11.2.2.2 實踐一般用戶在無需鍵入密碼的情況下取得特殊權限
3 Shell Scripts 語法
3.1 Shell (殼層) 介紹
3.1.1 Bash shell
3.2 文字編輯器
3.2.1 gedit
3.2.2 Sublime Text
3.2.2.1 安裝 Sublime Text
3.2.2.2 安裝 Package Control
3.2.2.3 安裝用作編寫 Shell Script 的插件
3.2.2.4 測試是否具有自動填寫 Shell Script 語法的功能
3.2.3 nano
3.2.4 vi
3.2.4.1 使用 vi 的事前準備
3.2.4.2 一般模式的指令
3.2.4.3 編輯模式的指令
3.2.4.4 底線模式的指令
3.2.4.5 使用 vi 開啟檔案
3.2.4.6 離開 vi
3.2.4.7 跳到第 888 行
3.2.4.8 在第 888 行的下方開始進行編輯
3.2.4.9 鍵入文字
3.2.4.10 刪除文字
3.2.4.11 儲存及離開
3.2.4.12 檢查是否已經儲存內容
3.3 編寫 Shell Script 的流程及Shell Script 的結構
3.3.1 編寫 Shell Script 的流程
3.3.2 Shell Script 的結構
3.3.3 實習:Hello World
3.4 註釋 (Comments)
3.4.1 實習:註釋 (Comments)
3.5 echo
3.5.1 echo (一整行)
3.5.1.1 實習:echo (一整行)
3.5.2 echo (非一整行)
3.5.2.1 實習:echo (非一整行)
3.6 使用 Shell Script 執行指令
3.6.1 實習:使用 Shell Script 執行指令 (第一部份)
3.6.2 實習:使用 Shell Script 執行指令 (第二部份)
3.7 變數
3.7.1 實習:錯誤處理變數的示範
3.7.2 實習:正確處理變數的示範
3.7.3 實習:變數的特點:變
3.7.4 Shell Script 內的單引號、雙引號及倒引號
3.7.4.1 單引號
3.7.4.2 雙引號
3.7.4.3 倒引號
3.7.4.4 實習:顯示行號
3.7.4.5 實習:單引號、雙引號及倒引號
3.7.5 參數及特殊的變數
3.7.5.1 實習:參數及特殊的變數
3.7.6 最得用戶的輸入
3.7.6.1 實習:取得用戶的輸入
3.8 算術運算
3.8.1 實習:算術運算
3.9 流程控制
3.9.1 if (基本:第一部份)
3.9.1.1 實習:if (基本:第一部份)
3.9.2 if (基本:第二部份)
3.9.2.1 實習:if (基本:第二部份)
3.9.3 if (數字比較)
3.9.3.1 實習:if (數字比較)
3.9.4 elseif
3.9.4.1 實習:elseif
3.9.5 if (字串比較)
3.9.5.1 實習:if (字串比較)
3.9.6 if (指令是否能夠執行)
3.9.6.1 實習:if (指令是否能夠正確執行)
3.9.7 case
3.9.7.1 實習:case
3.9.8 for loop (固定次數)
3.9.8.1 實習:for loop (固定次數)
3.9.9 break 與 continue
3.9.9.1 break
3.9.9.1.1 實習:break
3.9.9.2 continue
3.9.9.2.1 實習:continue
3.9.10 sleep
3.9.10.1 實習:sleep
3.9.11 for loop (取得資料夾內的資料夾或檔案及備份)
3.9.11.1 實習:for loop (取得現在資料夾內的資料夾或檔案)
3.9.11.2 實習:for loop (取得指定資料夾內的資料夾或檔案)
3.9.11.3 實習:for loop (遞歸地取得指定資料夾內指定的檔案)
3.9.11.4 實習:for loop (備份指定的檔案並為該備份加上日期時間戳)
3.9.12 while loop
3.9.12.1 實習:while loop
3.9.12.2 實習:while loop (製作清單)
3.9.13 until loop
3.9.13.1 實習:until loop
3.9.13.2 實習:until loop (製作清單)
3.9.14 檢查檔案屬性
3.9.14.1 實習:檢查是不是資料夾
3.9.14.2 實習:檢查是不是檔案
3.9.14.3 實習:檢查是否存在
3.9.14.4 實習:檢查是有沒有讀、寫及執行的權限
3.10 函數 (function)
3.10.1 實習:不具參數的函數
3.10.2 實習:具參數的函數 (基本結構)
3.10.3 實習:具參數的函數 (處理重覆性強的情況)
3.11 隨機數 (Random Numbers)
3.11.1 實習:隨機數 (Random Numbers)
3.12 處理日期和時間
3.12.1 實習:取得現在的年月日時分秒
3.12.2 更多的選項
3.12.3 實習:基於現在的時間進行 "加" 操作
3.12.4 實習:基於現在的時間進行 "減" 操作
3.12.5 實習:基於指定的時間進行 "加減" 操作
3.12.6 實習:時間範圍迴圈
3.12.7 實習:找出時區
3.12.8 實習:顯示不同時區現在的日期時間
3.12.9 實習:顯示不同時區指定的日期時間
3.13 定時地執行 Shell Script
3.13.1 crontab 檔案
3.13.1.1 例子1
3.13.1.2 例子2
3.13.1.3 例子3
3.13.1.4 例子4
3.13.1.5 例子5
3.13.1.6 例子6
3.13.2 實習:不含的 Shell Script 的排程工作
3.13.3 實習:執行具 Shell Script 的排程工作
3.14 遠端檔案抄寫 (Remote file copying)
3.14.1 概念
3.14.2 設定的概念
3.14.3 實習:設定遠端檔案抄寫 (Remote file copying)
3.14.4 實習:透過 Shell Script 進行遠端檔案抄寫 (Remote file copying)
4 sed (stream editor)
4.1 準備
4.1.1 版本檢查
4.1.2 sed 的運作流程
4.2 刪除所有內容
4.2.1 實習:刪除所有內容
4.3 操作範圍
4.3.1 實習:刪除第一行的文字
4.3.2 實習:刪除連續特定行數的文字 (第一部份)
4.3.3 實習:刪除連續特定行數的文字 (第二部份)
4.3.4 實習:刪除連續特定行數的文字 (第三部份, 單數行或雙數行)
4.3.5 實習:negation (否定)
4.4 代換 (Substitution)
4.4.1 實習:簡單代換 (Substitution)
4.4.2 實習:不區分大小寫的代換 (Substitution)
4.4.3 實習:具特定範圍的代換 (Substitution)
4.4.4 實習:同一行的多次比對
4.4.5 實習:改變預設的分隔符
4.4.6 實習:透過代換 (Substitution) 作刪除
4.5 插入 (Insertion) 與附加 (Append)
4.5.1 實習:插入 (Insertion) 一行的內容
4.5.2 實習:插入 (Insertion) 多行的內容
4.5.3 實習:附加 (Append) 多行的內容
4.5.4 實習:在檔案的最下方附加 (Append) 多行的內容
4.5.5 實習:產生很多文字的檔案 (第一部份)
4.5.6 實習:產生很多文字的檔案 (第二部份)
4.6 改變 (Change)
4.6.1 實習:改變 (Change)
4.6.2 sed change 與 substitution 的分別
4.7 sed 與正規表示式 (Regular Expression)
4.7.1 print
4.7.1.1 實習:print (第一部份)
4.7.1.2 實習:print (第二部份)
4.7.2 實習:測試正規表示式 (Regular Expression)
4.7.3 將正規表示式 (Regular Expression) 應用到範圍定義
4.7.3.1 實習:將正規表示式 (Regular Expression) 應用到範圍定義 (第一部份)
4.7.3.2 實習:將正規表示式 (Regular Expression) 應用到範圍定義 (第二部份)
4.7.4 實習:透過正規表示式 (Regular Expression) 取出有用的部份
4.8 sed 處理多行文字的技巧
4.8.1 Pattern space 與 Hold space
4.8.1.1 Pattern space
4.8.1.2 Hold space
4.8.2 實習:多行文字的代換 (Substitution)
4.8.3 實習:透過多行文字的代換 (Substitution) 設定 named.conf.options
5 GAWK
5.1 安裝 GAWK 及版本檢查
5.2 實習:列印所有資料
5.3 預設的變數
5.3.1 實習:預設的變數 (列數)
5.3.2 實習:預設的變數 (欄數)
5.4 控制處理的範圍
5.4.1 實習:只顯示 /dev/sda1 相關的硬碟使用情況
5.4.2 實習:不顯示第一行
5.5 BEGIN 和END
5.5.1 實習:BEGIN 和END
5.6 顯示每個欄位的值
5.6.1 實習:顯示每個欄位的值
5.7 條件判斷
5.7.1 實習:條件判斷
5.8 使用其他分隔符
5.8.1 實習:使用其他分隔符 (第一部份)
5.8.2 實習:使用其他分隔符 (第二部份)
6 其他相關技術
6.1 Shell Script 與 MySQL
6.1.1 安裝 MySQL 及設定 root 密碼
6.1.2 登入 MySQL
6.1.2.1 方式1
6.1.2.2 方式2
6.1.3 使用 Shell Script 操作 MySQL
6.1.3.1 實習:使用 Shell Script 登入 MySQL 並顯示所有資料庫
6.1.3.2 實習:使用 Shell Script 將 MySQL 指令的執行結果寫進檔案內
6.1.3.3 實習:使用 Shell Script 新增 MySQL 資料庫 (Databases)
6.1.3.4 實習:使用 Shell Script 新增 MySQL 資料表 (Tables)
6.1.3.5 實習:使用 Shell Script 新增 MySQL 資料並顯示資料
6.1.4 使用 Shell Script 備份及復原 MySQL 資料庫
6.1.4.1 實習:使用Shell Script 備份MySQL資料庫並在備份檔案內加上時間戳
6.1.4.2 實習:使用Shell Script 復原 MySQL資料庫
6.2 Shell Script 與帳戶管理
6.2.1 實習:使用Shell Script 新增用戶
6.2.2 實習:使用Shell Script 為用戶設定密碼
6.2.3 實習:使用Shell Script 新增群組
6.2.4 實習:使用Shell Script 將用戶加入群組
6.2.5 實習:使用Shell Script 刪除用戶
6.2.6 實習:使用Shell Script 刪除群組
6.3 Shell Script 與發送電郵
6.3.1 測試電郵伺服器
6.3.2 安裝 mailutils
6.3.3 實習:使用 Shell Script 發送電郵
6.3.4 實習:監控 Linux 硬盤空間,如空間不足便發送電子郵件通知 (第一部份)
6.3.4.1 技術背景
6.3.4.2 實習部份
6.3.5 實習:監控 Linux 硬盤空間,如空間不足便發送電子郵件通知 (第二部份)
6.4 連續執行的指令
6.4.1 實習:先執行A,不論 A 成功執行與否都會執行 B
6.4.2 實習:先執行A,只有成功執行 A 後才會執行 B
6.4.3 實習:先執行A,只有A執行失敗後才會執行 B
7 附錄1:安裝 Linux 及 OpenSSH