第四章:掌握 Bash 命令與腳本

各位同學大家好!在學習網站架設和伺服器管理的過程中,你們會發現很多重複性的工作,例如檢查伺服器狀態、備份檔案、清理日誌等等。這些工作如果每次都手動操作,不僅耗時費力,而且容易出錯。因此,學習如何使用 Bash 命令和腳本,來自動化這些任務,就變得非常重要!這章節會帶領大家進入 Bash 的世界,讓你們體驗伺服器管理的效率提升。 什麼是 Bash? Bash,全名是 Bourne Again Shell,它是 Linux 和 macOS 系統中預設的命令列介面,也是一個強大的指令直譯器。透過 Bash,我們可以與伺服器進行互動,執行各種命令來管理系統。 我們會學習一些常用的 Bash 命令,例如:

  • grep:搜尋特定文字。例如,grep "error" access.log 會在 access.log 檔案中搜尋包含 “error” 的行。這在分析 Nginx 日誌時非常有用,可以快速找出錯誤訊息。
  • find:搜尋檔案。例如,find /var/log -name "*.log" 會在 /var/log 目錄下搜尋所有副檔名為 “.log” 的檔案。這可以幫助你快速找到需要的日誌檔案。
  • sed:文字編輯器。例如,sed 's/old/new/g' file.txt 會將 file.txt 檔案中所有的 “old” 文字替換成 “new”。這在批次修改檔案內容時非常方便。 這些命令在日常伺服器管理中經常被用到,學會運用它們可以大大提高你的工作效率。 基本 Bash 命令:管道、重定向和後台運行 除了單獨使用這些命令外,我們還可以結合管道(|)、重定向(><)和後台運行(&)等功能,創造更強大的指令。
  • 管道 (|):將一個命令的輸出作為另一個命令的輸入。例如,ps aux | grep nginx 會先執行 ps aux 列出所有程序,再將結果傳給 grep nginx 搜尋與 nginx 相關的程序。這能精確地找到你想要的資訊。
  • 重定向 (><):改變命令的輸入或輸出方向。> 將輸出重定向到檔案,例如 ls -l > file_list.txt 將檔案列表輸出到 file_list.txt 檔案。< 將檔案內容作為命令的輸入,例如 wc -l < file.txt 計算 file.txt 的行數。
  • 後台運行 (&):將命令在背景執行,讓你可以在執行其他命令的同時進行。例如,tar -czvf backup.tar.gz /var/www & 會在背景壓縮 /var/www 目錄,而你可以繼續操作其他命令,不會阻塞你的工作流程。 舉例來說,我們可以用這些命令來過濾 Nginx 日誌,快速找出錯誤訊息:grep "error" access.log | wc -l > error_count.txt。這條指令會把 access.log 檔案中含有 “error” 的行數統計出來,並將結果存到 error_count.txt 檔案。 撰寫 Bash 腳本 學會使用單獨的命令後,我們可以將這些命令組合成腳本,實現更複雜的功能。一個 Bash 腳本的第一行通常是 #!/bin/bash,這稱為 shebang,它告訴系統使用 Bash 解釋器執行這個腳本。 一個簡單的自動備份腳本範例如下:
    #!/bin/bash
    date=$(date +%Y%m%d)
    tar -czvf /backup/website_$date.tar.gz /var/www

    這個腳本會將 /var/www 目錄備份到 /backup 目錄,並以日期命名備份檔案。 以下是一個檢查磁碟空間的腳本例子:

    #!/bin/bash
    df -h | awk '$NF=="/"{printf "Disk space usage: %.2f%% \n", $5}'
    if [ $(df -h | awk '$NF=="/"{printf "%s", $5}') -ge 90 ]; then
    echo "Warning: Disk space is almost full!"
    # 在這裡可以加入寄送郵件或其他警示機制
    fi

    這個腳本會顯示根目錄的磁碟空間使用率,並在使用率超過 90% 時發出警告。 課堂練習 請同學們撰寫一個 Bash 腳本,列出 /var/log 目錄下所有檔案的名稱,並將結果儲存到一個名為 log_list.txt 的檔案中。 結語 熟練掌握 Bash 命令和腳本,對伺服器管理至關重要。透過自動化,你們可以節省大量時間和精力,並降低人為錯誤的風險。 希望今天的課程能幫助大家入門 Bash,並開始享受自動化的便利。接下來,建議大家可以進一步學習套件管理工具,例如 apt (Debian/Ubuntu) 或 yum (CentOS/RHEL),這些工具能幫助你們更有效率地管理伺服器上的軟體。 持續練習,不斷學習,你們就能成為優秀的伺服器管理員!

優惠推廣

優惠推廣
不再顯示

確定今天不再顯示提示