Tools

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.

Trang GitHub của sharkdp/bat
Trang GitHub của sharkdp/bat (ảnh chụp tháng 11/2026)

GitHub: https://github.com/sharkdp/bat · khoảng 61 nghìn sao · Rust · Apache-2.0/MIT

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ọnTác dụng
--list-themes, --themeXem và chọn bảng màu; đặt mặc định bằng biến BAT_THEME
--styleChọn thành phần hiển thị: numbers, changes, header, grid…
--paging=neverKhô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)
--diffChỉ 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=bat nế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 -r hoặc head khi 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 --diff giú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

  1. sharkdp/bat — sharkdp (GitHub)