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

Pipe và file descriptor: ba luồng của Unix, và bẫy thứ tự 2>&1

Pipe và chuyển hướng là nền của dòng lệnh Unix, nhưng nhiều người dùng mà không hiểu ba luồng stdin/stdout/stderr tách nhau thế nào — dẫn tới bẫy kinh điển: cmd 2>&1 > file lại KHÔNG gộp được lỗi vào file. Bài mở đầu sê-ri Unix đo thật bằng bash: tách stdout/stderr, và vì sao thứ tự của > và 2>&1 quyết định kết quả.

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

grep và regex: vì sao "ERROR|WARN" không chạy, và ba phương ngữ BRE/ERE/PCRE

Ai cũng dùng grep, nhưng ít người biết grep có tới ba phương ngữ regex — và dùng nhầm là nguyên nhân của cái bẫy kinh điển: grep "ERROR|WARN" không tìm "ERROR hoặc WARN". Bài này chạy grep thật trên log mẫu: đếm và đảo, BRE vs ERE, trích IP bằng -o, lấy giá trị sau user= bằng PCRE \K, và tìm từ lặp bằng backreference.

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

sed thực chiến: thay thế, địa chỉ, nhóm bắt — và bẫy sed -i giết script khi đổi máy

sed là con dao đa năng để biến đổi văn bản theo dòng, nhưng cú pháp cô đọng khiến nhiều người chỉ dùng mỗi s/a/b/. Bài này chạy sed thật: cờ g/N/I, chọn dòng theo địa chỉ và mẫu, xoá dòng, nhóm bắt \1 \2, in chọn lọc thay grep — và cái bẫy sed -i khác nhau giữa Linux (GNU) và macOS (BSD) khiến script hỏng khi chuyển máy.

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 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 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.