管線與重導向
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
把這些工具串起來,你就能寫出自動化的維運小腳本了。