bat: lệnh cat có tô màu cú pháp, số dòng và đánh dấu thay đổi git
Tóm tắt
bat thay cat khi đọc file: tô màu cú pháp, số dòng, đánh dấu dòng sửa theo git, tự phân trang. Dùng -r để xem đoạn dòng, -l cho dữ liệu từ pipe, và ghép với fzf để xem trước file.
cat in nội dung file ra màn hình, không hơn. Khi đọc một file cấu hình dài hay một đoạn code, bạn phải tự dò dòng, không có màu, không biết dòng nào vừa sửa. bat là bản "cat có cánh": tô màu cú pháp cho hàng trăm ngôn ngữ, hiện số dòng, đánh dấu các dòng đã thay đổi so với git, và tự mở trình phân trang khi file dài. Khi pipe sang lệnh khác, nó tự cư xử như cat bình thường, nên thay thế được mà không làm hỏng script.

Cài đặt
brew install bat # macOS
sudo apt install bat # Ubuntu/Debian: lệnh tên là batcat
cargo install --locked bat # có Rust
# Trên Ubuntu, tạo alias cho quen tay
alias bat=batcat
Cách dùng cơ bản
bat src/main.rs # xem file có màu, số dòng, đánh dấu git
bat README.md package.json # xem nhiều file liên tiếp
bat -r 40:60 app.py # chỉ xem dòng 40 đến 60
bat -p config.yaml # kiểu "plain": bỏ số dòng, khung
bat -A script.sh # hiện ký tự ẩn: tab, khoảng trắng, xuống dòng
curl -s https://api.github.com/repos/sharkdp/bat | bat -l json
Lệnh cuối cho thấy một mẹo hay: dữ liệu từ pipe không có đuôi file, nên dùng -l để chỉ định ngôn ngữ cần tô màu.
Tuỳ chọn hay dùng
| Tuỳ chọn | Tác dụng |
|---|---|
--list-themes, --theme | Xem và chọn bảng màu; đặt mặc định bằng biến BAT_THEME |
--style | Chọn thành phần hiển thị: numbers, changes, header, grid… |
--paging=never | Không mở trình phân trang, in thẳng ra màn hình |
-l | Ép ngôn ngữ khi tô màu (hữu ích với dữ liệu từ pipe) |
--diff | Chỉ hiện các dòng đã thay đổi so với git, kèm ngữ cảnh |
Tích hợp với công cụ khác
- Xem man page có màu: thêm vào
.zshrc:export MANPAGER="sh -c 'col -bx | bat -l man -p'". - Khung xem trước trong fzf:
fzf --preview 'bat --color=always --line-range :200 {}'. - Đọc log có màu:
tail -f app.log | bat --paging=never -l log. - File cấu hình riêng: chạy
bat --generate-config-fileđể tạo file cấu hình, đặt theme và style một lần cho mọi lần chạy.
Lưu ý
- Đừng alias
cat=batnếu script của bạn dựa vào cờ đặc thù của cat; dù bat tự chuyển sang chế độ plain khi pipe, alias chỉ nên dùng cho thao tác gõ tay. - Màu sắc phụ thuộc terminal; nếu thấy màu lạ, thử theme khác hoặc kiểm tra terminal có hỗ trợ 24-bit color không.
- File rất lớn sẽ chậm hơn cat vì phải tô màu; dùng
-rhoặcheadkhi chỉ cần một đoạn.
Áp dụng thế nào?
- Dev: Dùng bat thay cat khi đọc code trong terminal hay qua SSH, kết hợp
-rđể nhảy đúng đoạn cần xem khi debug theo số dòng trong stack trace. - Tech Lead: Khi review nhanh trên server không có IDE,
bat --diffgiúp thấy ngay chỗ đã sửa so với commit gần nhất. - PM: Công cụ chi phí bằng không, cài một lệnh; đưa vào bộ công cụ chuẩn khi setup máy cho dev mới.
Nguồn & tham khảo
- sharkdp/bat — sharkdp (GitHub)