Linux 基礎入門

第六章:Shell 指令進階與自動化

管線與重導向

Linux 指令最強大的地方之一,就是可以把多個簡單指令組合成複雜的處理流程。

指令A | 指令B     # 管線:把 A 的輸出當作 B 的輸入
指令 > 檔案       # 重導向:把輸出寫入檔案(覆蓋)
指令 >> 檔案      # 把輸出附加到檔案結尾
指令 < 檔案       # 把檔案內容當作輸入

文字處理三劍客

grep "關鍵字" 檔案        # 搜尋符合關鍵字的行
grep -r "關鍵字" 資料夾    # 在資料夾中遞迴搜尋
sed 's/舊文字/新文字/g' 檔案  # 取代文字內容
awk '{print $1}' 檔案      # 依欄位處理文字(預設以空白分隔)

範例:找出 log 檔中所有包含 ERROR 的行,並只取出時間欄位:

grep "ERROR" app.log | awk '{print $1, $2}'

Shell 變數與簡單腳本

name="Linux"
echo "Hello, $name"

把指令寫成檔案(例如 backup.sh),加上開頭的 #!/bin/bash,再給予執行權限就能重複執行:

#!/bin/bash
echo "備份開始"
tar -czf backup.tar.gz /home/user/data
echo "備份完成"
chmod +x backup.sh
./backup.sh

排程任務:cron

cron 可以讓腳本在指定時間自動執行:

crontab -e   # 編輯排程

格式為「分 時 日 月 星期 指令」,例如每天凌晨 2 點執行備份:

0 2 * * * /home/user/backup.sh

把這些工具串起來,你就能寫出自動化的維運小腳本了。