BlogLộ trình học Bash Script
Bố cục bài viết
Lộ trình học Bash Script
Giai đoạn 1 — Nền tảng (3-5 ngày)
Giai đoạn 2 — Control flow (3-5 ngày)
Giai đoạn 3 — Xử lý text/data (1 tuần)
Giai đoạn 4 — Kỹ thuật nâng cao cơ bản (1 tuần)
Giai đoạn 5 — Ứng dụng thực tế (song song, xuyên suốt)
Giai đoạn 6 — Advanced thực sự
Process & job control
Parallel processing / performance
String/data nâng cao
Error handling & robustness cấp production
Tương tác hệ thống sâu
Bảo mật khi viết script
Tài nguyên gợi ý
Trang này
Sunex
31/07/2026 · 4 phút đọc
Ngày tạo
31/07/2026
Cập nhật
Lượt xem
8
Đọc
4m
Lộ trình học Bash Script
Lộ trình dành cho người đã quen thuộc với Linux/Docker/command line, tập trung thực hành và ứng dụng vào công việc thực tế (network/telecom, security, DevOps).
Giai đoạn 1 — Nền tảng (3-5 ngày)
- Shell cơ bản: shebang (
#!/bin/bash), permission (chmod +x), cách chạy script (./script.shvsbash script.shvssource) - Biến: khai báo,
$VARvs${VAR}, biến môi trường (export), biến đặc biệt ($1 $2 $@ $# $? $$ $0) - Quoting: single quote vs double quote vs backtick — đây là chỗ 90% người mới bị lỗi, nên nắm kỹ ngay từ đầu
- I/O redirection:
>,>>,<,2>,&>, pipe|
Giai đoạn 2 — Control flow (3-5 ngày)
if/elif/else, test operators ([ ]vs[[ ]]— nên dùng[[ ]]cho bash hiện đại)for,while,untilloopcasestatement (rất hữu ích khi parse argument hoặc protocol type)- Functions: local variable, return code vs echo để “trả giá trị”
- Exit code,
$?,set -e,set -u,set -o pipefail— nên tập thói quen dùng ngay từ sớm
Giai đoạn 3 — Xử lý text/data (1 tuần)
Phần quan trọng nhất với công việc phân tích log/capture:
grep,sed,awk(awk đáng đầu tư sâu — rất mạnh cho parse log Diameter/GTP dạng text)cut,sort,uniq,tr,wc- Array trong bash (indexed array và associative array
declare -A) - String manipulation: substring, replace, split bằng
IFS - Regex trong bash (
[[ $x =~ regex ]])
Giai đoạn 4 — Kỹ thuật nâng cao cơ bản (1 tuần)
- Xử lý argument dòng lệnh:
getoptscho script CLI tử tế - Trap signal (
trap ... SIGINT EXIT) — quan trọng khi viết script chạy nền/monitoring - Xử lý file descriptor, process substitution
<(...) - Debug:
bash -x script.sh,set -x/set +x - Viết script an toàn: quoting biến path, kiểm tra input, tránh injection khi script gọi lệnh khác
Giai đoạn 5 — Ứng dụng thực tế (song song, xuyên suốt)
Vừa học vừa áp dụng vào việc đang làm, thay vì học hết lý thuyết mới thực hành:
- Viết script tự động hoá thao tác Docker Compose cho các container (
sunex-wiki-system, MinIO, v.v.) - Script wrapper cho
tshark/tcpdumpđể lọc và log traffic GTPv2-C/Diameter theo điều kiện - Script backup/rotate log, kiểm tra healthcheck cho PostgreSQL/MinIO
- Script parse output
tshark -T fieldsthành CSV để phân tích tiếp bằng Python/pandas
Giai đoạn 6 — Advanced thực sự
Không cần học tuần tự — dùng như “tra cứu theo nhu cầu” khi viết script thực tế và gặp vấn đề cụ thể.
Process & job control
- Background job (
&,jobs,fg,bg,disown,nohup) - Subshell vs current shell (
()vs{}), tác động đến biến/scope waitđể đồng bộ nhiều process chạy song song- Named pipe (FIFO) với
mkfifo— hữu ích khi cần pipe dữ liệu giữa 2 process không liên quan trực tiếp
Parallel processing / performance
xargs -Pđể chạy song songparallel(GNU parallel) nếu cần xử lý hàng loạt file capture lớn- Tối ưu subprocess spawn (tránh gọi
awk/greplặp lại trong loop — antipattern rất phổ biến)
String/data nâng cao
- Parameter expansion đầy đủ:
${var:-default},${var:=default},${var:+alt},${var:offset:length},${var/pattern/replace},${var^^}${var,,}(uppercase/lowercase) - Heredoc (
<<EOF) và herestring (<<<) printfthay vìechokhi cần format chính xác (đặc biệt in hex/binary data từ capture)
Error handling & robustness cấp production
trapvớiERRsignal để log lỗi có context- Script template chuẩn:
set -euo pipefail+trap cleanup EXIT+ lockfile chống chạy trùng (flock) - Structured logging trong script (timestamp, log level, ghi ra file + stdout)
Tương tác hệ thống sâu
- Đọc/parse
/proc,/sys— hữu ích khi debug network namespace, interface - Named file descriptor tùy chỉnh (
exec 3<>/dev/tcp/host/port) — bash có thể mở raw TCP socket không cầnnc, khá hay để biết cho việc test nhanh giao thức flockcho concurrency control khi nhiều script/cron chạy cùng lúc
Bảo mật khi viết script
- Tránh injection khi nhận input từ file/argument (đặc biệt nếu script build command string rồi
eval) IFShandling khi loop qua filename có khoảng trắng- ShellCheck ở mức strict, hiểu rõ tại sao nó cảnh báo từng lỗi
Tài nguyên gợi ý
man bashvà đặc biệt phầnPARAMETER EXPANSION— tham khảo lại nhiều hơn là đọc hết 1 lần- ShellCheck (linter) — cài ngay từ đầu, dạy best practice qua từng lỗi nó báo
- “Advanced Bash-Scripting Guide” (TLDP) để tra cứu khi cần specific case