Bttf: Công cụ dòng lệnh "dao mổ Thụy Sĩ" cho mọi thao tác với thời gian

Công nghệ28 tháng 5, 2026·3 phút đọc

Bttf là một công cụ dòng lệnh hiện đại viết bằng ngôn ngữ Rust, giúp lập trình viên xử lý các phép tính thời gian, định dạng, phân tích cú pháp và chuyển đổi múi giờ một cách trực quan và mạnh mẽ hơn so với các công cụ truyền thống.

Bttf: Công cụ dòng lệnh "dao mổ Thụy Sĩ" cho mọi thao tác với thời gian

BurntSushi, một nhà phát triển nổi tiếng trong cộng đồng ngôn ngữ lập trình Rust, đã tung ra một công cụ dòng lệnh mới mang tên bttf. Đây được xem là một "con dao đa năng" (Swiss army knife) dành cho việc xử lý datetime (ngày giờ) trên terminal, giải quyết nhiều hạn chế của lệnh date vốn đã quá cũ kỹ và khó nhớ các tham số.

Trạng thái CI của dự ánTrạng thái CI của dự án

Tại sao cần bttf?

Hầu hết các hệ điều hành đều đi kèm lệnh date, nhưng cú pháp của nó thường rất phức tạp và không nhất quán giữa các phiên bản GNU và BSD. bttf được xây dựng để cung cấp một giao diện trực quan hơn, cho phép người dùng thực hiện các thao tác như định dạng, cộng trừ thời gian, chuyển đổi múi giờ và thậm chí xử lý các file log một cách dễ dàng.

Công cụ này được viết bằng Rust và tận dụng sức mạnh của thư viện xử lý thời gian Jiff, cùng với hỗ trợ địa phương hóa từ ICU4X.

Các tính năng chính

Định dạng và hiển thị thời gian

Thay vì nhớ các ký tự định dạng khó hiểu, bttf cho phép hiển thị thời gian hiện tại hoặc một thời điểm cụ thể với các định dạng phổ biến như RFC3339 hoặc tự chỉnh sửa.

Ví dụ, để in thời gian hiện tại:

$ bttf
Sat, May 10, 2025, 8:02:04 AM EDT

Định dạng theo RFC3339:

$ bttf time fmt -f rfc3339 now
2025-05-10T08:08:30.101066734-04:00

Tính toán thời gian (Datetime Arithmetic)

Bạn có thể dễ dàng cộng hoặc trừ các khoảng thời gian. Ví dụ, để tìm ra thời điểm của 1 tuần trước:

$ bttf time add -1w now
2025-05-03T10:34:30.819577918-04:00[America/New_York]

Hoặc cộng thêm 6 tháng:

$ bttf time add 6mo now
2025-11-10T10:34:49.023321635-05:00[America/New_York]

Chuyển đổi múi giờ

Chuyển đổi thời gian sang múi giờ khác và làm tròn đến mốc 15 phút gần nhất:

$ bttf time in Asia/Bangkok now | bttf time round -i 15 -s minute
2025-05-10T19:15:00+07:00[Asia/Bangkok]

Xử lý file log thông minh

Một tính năng rất hữu ích cho DevOps là khả năng tìm kiếm và định dạng lại các timestamp nằm trong văn bản hoặc file log mà không làm thay đổi cấu trúc chung của file.

Ví dụ chuyển đổi timestamp UTC trong log về giờ địa phương:

$ bttf tag lines /tmp/access.log | bttf time in system | bttf time fmt -f '%c' | head -n3 | bttf untag -s
Wed, Apr 30, 2025, 1:25:14 AM EDT       INFO    http.log.access.log0    handled request
...

Tạo chuỗi thời gian

Bạn có thể tạo ra các lịch trình lặp lại. Ví dụ: liệt kê 5 ngày tiếp theo là Thứ Hai, Tư hoặc Thứ Sáu:

$ bttf time seq day today -c5 -H 9 -w mon,wed,fri | bttf time fmt -f '%c'
Mon, May 12, 2025, 9:00:00 AM EDT
Wed, May 14, 2025, 9:00:00 AM EDT
Fri, May 16, 2025, 9:00:00 AM EDT
...

Cài đặt và sử dụng

bttf có sẵn trên crates.io và hỗ trợ cài đặt thông qua cargo:

cargo install bttf

Nếu bạn cần hỗ trợ ngôn ngữ địa phương (locale), hãy cài đặt với tính năng bổ sung:

cargo install bttf --features locale

Tác giả cũng cảnh báo rằng hiện tại dự án vẫn đang trong quá trình phát triển tích cực và có thể có những thay đổi lớn (breaking changes) không báo trước. bttf không cố gắng tương thích 100% với lệnh date của POSIX, mà tập trung vào việc cung cấp trải nghiệm người dùng tốt hơn cho các tác vụ phức tạp.

Phiên bản trên crates.ioPhiên bản trên crates.io

Đối với những ai thường xuyên phải làm việc với script, cron job hay phân tích log trên terminal, bttf hứa hẹn sẽ là một công cụ đắc lực giúp tiết kiệm thời gian và giảm bớt sự đau đầu khi xử lý các phép tính ngày giờ.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗