
Atuin là công cụ lịch sử shell hiện đại thay thế history tích hợp sẵn của bash/zsh/fish. Khác với history truyền thống chỉ lưu lệnh cục bộ, Atuin lưu trữ có cấu trúc (SQLite), đồng bộ qua nhiều máy qua server tự hosting hoặc cloud miễn phí, và cung cấp giao diện tìm kiếm fuzzy (fzf-style) trực tiếp trên terminal.
Vấn đề của history truyền thống
History mặc định của shell có nhược điểm rõ rệt:
- Chỉ lưu lệnh — không có timestamp, exit code, thư mục làm việc, duration.
- Cục bộ — máy tính bàn và laptop không chia sẻ lịch sử.
- Ghi đè — session sau ghi đè session trước khi shell thoát (bash) hoặc giới hạn
HISTSIZE. - Tìm kiếm yếu —
Ctrl+Rchỉ khớp substring, không fuzzy, không filter theo context.
Atuin giải quyết tất cả: mỗi entry lưu command, cwd, exit_code, timestamp, duration, hostname, session — cho phép query như “lệnh fail tại thư mục /home/user/project tuần trước”.

Cài đặt nhanh
# Linux/macOS (single binary)
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
# Hoặc qua package manager
brew install atuin # macOS
cargo install atuin # Rust/cargo
pacman -S atuin # Arch
# Windows: scoop install atuin
Sau cài, chạy atuin import auto để nhập history từ bash/zsh/fish hiện tại, rồi atuin login (tùy chọn) để bật sync.
Tìm kiếm và sử dụng
Mặc định Atuin bind Ctrl+R thay thế reverse search của shell. Giao diện hiển thị:
- Dòng lệnh (highlight match fuzzy)
- Thư mục làm việc (cwd)
- Exit code (✓/✗ màu xanh/đỏ)
- Thời gian relative (2h ago, 3d ago)
- Hostname (nếu sync multi-machine)
Phím tắt trong Atuin search:
| Phím | Hành động |
|---|---|
Ctrl+R |
Mở search / chuyển chế độ (fuzzy ⇄ prefix) |
Ctrl+P/Ctrl+N |
Up/Down chọn kết quả |
Enter |
Chạy lệnh ngay |
Ctrl+E |
Chỉnh sửa lệnh trước khi chạy |
Ctrl+O |
Chèn vào command line (không chạy) |
Ctrl+D |
Xóa entry khỏi history |

Sync đa máy: Self-host hoặc Cloud
Atuin hỗ trợ 2 chế độ sync:
- Atuin Cloud (miễn phí) — đăng ký tại
https://atuin.sh, chạyatuin login -u username -p password. Dữ liệu mã hóa end-to-end (client-side encryption) trước khi gửi server. - Self-host — docker-compose đơn giản:
version: '3' services: atuin: image: ghcr.io/atuinsh/atuin:latest command: server environment: - ATUIN_HOST=0.0.0.0 - ATUIN_PORT=8888 - ATUIN_DB_URL=sqlite:///data/atuin.db volumes: - ./data:/data ports: - "8888:8888"Rồi client config
atuin login -u user -p pass --server https://your-server.com.
Truy vấn lịch sử nâng cao (CLI)
Ngoài interactive search, Atuin cung cấp CLI cho script/automation:
# Liệt kê 20 lệnh gần nhất
atuin history list --limit 20
# Tìm lệnh chứa "docker" chạy tại ~/projects, exit code != 0
atuin history search "docker" --cwd "~/projects" --exit-code 1
# Xuất JSON cho script khác consume
atuin history search "git" --format json | jq '.[] | {cmd: .command, time: .timestamp}'
Cấu hình tùy chỉnh
File config tại ~/.config/atuin/config.toml (tự tạo khi chạy atuin config):
[search]
mode = "fuzzy" # hoặc "prefix", "fulltext"
auto_sync = true
sync_frequency = "30m"
[ui]
style = "compact" # "full" hiển thị thêm hostname, duration
inline_height = 15 # số dòng hiển thị trong popup
So sánh với các tool tương tự
| Tool | Sync | Structured Data | Fuzzy Search | Self-host |
|---|---|---|---|---|
| Atuin | ✓ (E2E encrypted) | ✓ (SQLite, full context) | ✓ (native) | ✓ (Docker) |
| McFly | ✗ | ✗ | ✓ | ✗ |
| fzf + history | ✗ | ✗ | ✓ | ✗ |
| Zsh history + histdb | ✗ | ✓ (SQLite) | ✗ | ✗ |
Chi tiết cơ chế lưu trữ
Atuin dùng SQLite làm backend lưu trữ cục bộ (~/.local/share/atuin/history.db). Schema chính bao gồm các bảng: history (command, cwd, exit_code, timestamp, duration, session, hostname), hosts, sessions. Khi sync, client mã hóa AES-256-GCM toàn bộ database cục bộ rồi upload lên server. Server chỉ lưu blob mã hóa — không thể đọc nội dung lệnh. Đây là điểm khác biệt lớn so với các solution sync history khác thường gửi plaintext.
Integrations phổ biến
- Starship prompt — hiển thị indicator Atuin sync status trên prompt
- Zellij — pane history tích hợp Atuin search
- Neovim — plugin
atuin.nvimtìm kiếm history từ editor - WezTerm/Ghostty — keybinding custom cho Atuin search
Có thể tích hợp Atuin với shell prompt oh-my-zsh, bash-preexec, hoặc fish để luôn hiển thị lệnh gần nhất ở góc terminal.
Performance và Benchmark
Atuin được viết bằng Rust, tối ưu cho tốc độ. Import history 100k entries mất ~2 giây. Search fuzzy trên 50k entries trả kết quả <50ms. Sync incremental chỉ gửi delta thay vì full database. Memory footprint ~10-15MB khi daemon chạy nền. So với McFly (cũng viết Rust), Atuin nhanh hơn nhờ SQLite indexing và không cần rebuild index mỗi lần search.
Tóm tắt
Atuin biến lịch sử shell từ một file text phẳng thành cơ sở dữ liệu có cấu trúc, tìm kiếm fuzzy, và đồng bộ đa máy an toàn. Cài đặt một lệnh, import tự động, và Ctrl+R ngay lập tức mạnh hơn gấp nhiều lần. Dành cho developer, DevOps, sysadmin làm việc trên nhiều máy — Atuin là nâng cấp “bắt buộc” cho terminal workflow hiện đại.
Nguồn: Atuin Official Site | Atuin GitHub | Atuin Documentation
