Bài viết mới nhất

Tổng 2300 bài
Công cụ 22/09/2026 6 phút

awk cho dữ liệu cột: lọc, tính toán và group-by ngay trên luồng — không cần CSDL

Nhiều người dùng awk chỉ để in một cột (awk '{print $2}') rồi bỏ qua phần mạnh nhất của nó. awk là một ngôn ngữ hoàn chỉnh để xử lý dữ liệu bảng. Bài này chạy awk thật trên bảng bán hàng TSV: lọc theo giá trị số của cột, tính thành tiền, và group-by tổng doanh thu mỗi nhân viên bằng mảng kết hợp — tất cả trong một dòng lệnh.

Công cụ 22/09/2026 5 phút

sort, uniq, cut: bộ ba phân tích log — vì sao uniq gần như luôn cần sort trước

uniq không lọc trùng toàn bộ — nó chỉ gộp dòng giống nhau NẰM CẠNH nhau, nên gần như luôn phải sort trước. Bài này chạy thật trên access.log: cut trích cột, minh chứng bẫy uniq không sort, thành ngữ đếm tần suất sort | uniq -c | sort -rn, và vì sao sort mặc định coi 10 nhỏ hơn 2 nếu không có -n.

Công cụ 22/09/2026 6 phút

find + xargs: vì sao "ls | rm" không chạy, và cái bẫy tên file có dấu cách

find tìm file theo mọi tiêu chí; xargs biến kết quả thành đối số cho lệnh khác. Nhưng ghép hai cái ẩu là công thức xoá nhầm file. Bài này chạy thật: tìm theo loại/kích thước, -exec, và chứng minh vì sao find | xargs vỡ tên có dấu cách thành 5 mảnh — cùng cách đúng -print0 | xargs -0, và -P chạy song song nhanh gấp 6 lần.

Công cụ 22/09/2026 6 phút

Quoting trong shell: vì sao quên "dấu ngoặc kép quanh biến" là bug #1 của script bash

Quên quote biến ($f thay vì "$f") là lỗi shell phổ biến và nguy hiểm nhất: khi giá trị có dấu cách, shell tách nó thành nhiều đối số. Bài này chạy thật để thấy ls $f biến một tên file thành 4 đối số lỗi, biến chứa * bị nở thành tên file, nháy đơn vs kép, và cái bẫy rm -rf $var/* biến rỗng thành rm -rf /*.

Công cụ 22/09/2026 6 phút

Exit code và set -e: vì sao script "an toàn" vẫn âm thầm nuốt lỗi

set -e tưởng làm script dừng ngay khi có lỗi, nhưng nó có nhiều ngoại lệ khiến lỗi lọt qua — nguy hiểm nhất là exit code của pipe chỉ lấy lệnh cuối. Bài này chạy thật: exit code từng lệnh, set -e dừng ở đâu và KHÔNG dừng ở đâu, bẫy false | echo trả 0, và bộ ba set -euo pipefail bắt cả biến chưa gán.

Công cụ 22/09/2026 5 phút

tar và nén: vì sao tar không nén, và cái bẫy thứ tự cờ khiến bạn mất file

tar chỉ GỘP nhiều file thành một — nén là bước riêng (gzip/zstd/xz). Hiểu lầm này cùng cái bẫy thứ tự cờ -f khiến nhiều người tạo nhầm archive hoặc ghi đè mất dữ liệu. Bài này chạy thật: tar cf vs czf, so gzip vs zstd về kích thước và tốc độ, xem nội dung không cần giải nén, và minh chứng tar -cf data goi.tar báo lỗi.