Bash Scripting là gì? Hướng dẫn viết script cho người mới

Bash Scripting là gì?

Bash scripting là kỹ thuật viết các tập lệnh (script) chạy trên shell Bash – trình thông dịch dòng lệnh mặc định của hầu hết hệ điều hành Linux và macOS. Một script Bash là file văn bản chứa chuỗi lệnh được thực thi tuần tự, giúp tự động hóa các tác vụ lặp lại trên máy tính.

Thay vì gõ từng lệnh bằng tay mỗi lần, bạn viết chúng một lần trong file và chạy khi cần. Từ việc sao lưu dữ liệu, xử lý log đến triển khai ứng dụng, bash scripting là kỹ năng nền tảng của mọi quản trị viên hệ thống và lập trình viên làm việc với Linux.

Cửa sổ terminal Linux hiển thị trang hướng dẫn lệnh ls trong bash

Cấu trúc cơ bản của một script Bash

Một script Bash bắt đầu bằng shebang – dòng đầu tiên khai báo trình thông dịch sẽ chạy script:

#!/bin/bash
echo "Xin chào từ script đầu tiên"

Lưu file với đuôi .sh, sau đó phân quyền thực thi và chạy bằng lệnh chmod +x hello.sh rồi ./hello.sh, hoặc đơn giản là bash hello.sh. Shebang giúp hệ điều hành biết dùng Bash thay vì shell khác khi bạn chạy trực tiếp file.

Biến trong Bash

Bash không yêu cầu khai báo kiểu dữ liệu, gán biến trực tiếp không có khoảng trắng quanh dấu bằng: ten="Linux", sau đó truy cập bằng $ten. Luôn đặt biến trong dấu ngoặc kép khi dùng: echo "$ten" để tránh lỗi khi giá trị chứa khoảng trắng. Tham số dòng lệnh được truyền qua $1, $2… và $# đếm số tham số.

Câu điều kiện và vòng lặp

Câu lệnh điều kiện kiểm tra giá trị và rẽ nhánh luồng thực thi:

if [ $diem -gt 5 ]; then
  echo "Đậu"
else
  echo "Trượt"
fi

Các toán tử so sánh số gồm -eq (bằng), -ne (khác), -gt (lớn hơn), -lt (nhỏ hơn); kiểm tra file dùng -f (file tồn tại) và -d (thư mục tồn tại). Vòng lặp for duyệt danh sách và while lặp theo điều kiện:

for i in {1..5}; do
  echo "Lần lặp $i"
done

dem=0
while [ $dem -lt 3 ]; do
  echo "Đếm: $dem"
  ((dem++))
done

Poster shell scripting với cửa sổ editor hiển thị mã bash script mẫu

Hàm trong Bash

Hàm giúp đóng gói logic tái sử dụng, khai báo bằng cú pháp đơn giản:

log_message() {
  local message="$1"
  echo "$(date): $message"
}

log_message "Script bắt đầu chạy"

Biến local giới hạn phạm vi bên trong hàm, tránh xung đột với biến toàn cục. Hàm nhận tham số qua $1, $2 như script chính, và trả về mã thoát qua lệnh return.

Tự động hóa tác vụ với cron

Cron là bộ lập lịch của Linux, chạy script tự động theo thời gian định sẵn. Lệnh crontab -e mở bảng lịch biểu, mỗi dòng có năm trường: phút, giờ, ngày trong tháng, tháng, ngày trong tuần. Ví dụ 30 2 * * * /home/user/backup.sh chạy script sao lưu lúc 2:30 sáng mỗi ngày, */5 * * * * chạy mỗi 5 phút.

Đây là ứng dụng phổ biến nhất của bash scripting trong vận hành: sao lưu tự động, dọn log cũ, gửi báo cáo qua email, đồng bộ dữ liệu giữa máy chủ. Một script viết tốt chạy âm thầm mỗi đêm, thay thế hàng giờ làm việc thủ công.

Kỹ thuật viết script an toàn

Script càng phức tạp càng dễ sai, nên áp dụng các kỹ thuật sau từ đầu: set -euo pipefail ở đầu script khiến nó dừng ngay khi gặp lỗi, báo lỗi biến chưa khai báo và lỗi pipeline. Kiểm tra mã thoát $? sau mỗi lệnh, 0 nghĩa là thành công. Dùng trap để dọn dẹp file tạm khi script thoát, tránh để lại rác trên hệ thống.

Trong thực tế DevOps, script kiểm tra sức khỏe dịch vụ thường viết dạng vòng lặp thử lại: chạy curl kiểm tra endpoint, nếu thất bại chờ vài giây rồi thử lại tối đa 5 lần trước khi báo lỗi. Cách này giúp tự động hóa đáng tin cậy ngay cả khi hệ thống phụ thuộc chưa sẵn sàng ngay.

Prompt bash trống trên terminal minh họa môi trường chạy script

Ví dụ script hoàn chỉnh

Kết hợp các kiến thức trên thành script sao lưu đơn giản:

#!/bin/bash
set -euo pipefail
backup_dir="/home/user/backups"
mkdir -p "$backup_dir"
timestamp=$(date +%Y%m%d_%H%M%S)
tar -czf "$backup_dir/data_$timestamp.tar.gz" /home/user/data
echo "Sao lưu hoàn tất: data_$timestamp.tar.gz"

Script tạo thư mục lưu trữ nếu chưa có, đóng gói thư mục dữ liệu thành file nén kèm thời gian, rồi in thông báo. Thêm dòng 0 2 * * * /home/user/backup.sh vào crontab là bạn đã có hệ thống sao lưu tự động hoàn chỉnh.

Kết luận

Bash scripting biến những tác vụ thủ công lặp lại thành tự động hóa đáng tin cậy. Bắt đầu từ script vài dòng với biến và điều kiện, rồi dần thêm hàm, cron và kỹ thuật xử lý lỗi. Đây là kỹ năng có giá trị lâu dài cho bất kỳ ai làm việc với Linux, từ quản trị hệ thống đến phát triển phần mềm.

Tham khảo thêm: hướng dẫn bash scripting cho người mới của freeCodeCamp, bash scripting cơ bản cho DevOps engineertự động hóa tác vụ Linux với Bash.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Svelte là gì? Hướng dẫn toàn diện cho người mới bắt đầu

Svelte là gì? Svelte là một framework JavaScript nguồn mở được tạo bởi Rich Harris, phát hành lần đầu năm 2016. Khác với React, Vue hay Angular, Svelte hoạt động…

Xem thêm

Flutter là gì? Hướng dẫn toàn diện cho người mới bắt đầu

Flutter là gì? Flutter là framework mã nguồn mở do Google phát triển, dùng để xây dựng ứng dụng đa nền tảng từ một codebase duy nhất. Với ngôn ngữ…

Xem thêm

HTMX là gì? Hướng dẫn AJAX trực tiếp trong HTML không cần JavaScript

HTMX là gì? HTMX là một thư viện JavaScript nhỏ gọn cho phép bạn gửi yêu cầu AJAX, kích hoạt chuyển tiếp CSS, dùng WebSocket và Server-Sent Events trực tiếp…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất