Atuin: Lịch sử shell hiện đại thay thế history với sync đám mây

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ếuCtrl+R chỉ 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”.

Screenshot Atuin search UI với fuzzy finder highlight kết quả
Screenshot Atuin search UI với fuzzy finder highlight kết quả

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
Terminal demo Atuin search với nhiều entry multi-machine
Terminal demo Atuin search với nhiều entry multi-machine

Sync đa máy: Self-host hoặc Cloud

Atuin hỗ trợ 2 chế độ sync:

  1. Atuin Cloud (miễn phí) — đăng ký tại https://atuin.sh, chạy atuin login -u username -p password. Dữ liệu mã hóa end-to-end (client-side encryption) trước khi gửi server.
  2. 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.nvim tì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

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

n8n là gì? Công cụ tự động hóa workflow mã nguồn mở

n8n là gì? Công cụ tự động hóa workflow mã nguồn mở n8n là một công cụ tự động hóa công việc (workflow automation) mã nguồn mở cho phép kết…

Xem thêm

Proxmox VE là gì? Cài đặt server ảo hóa open-source tại nhà

Proxmox VE là gì? Proxmox Virtual Environment (PVE) là nền tảng ảo hóa server mã nguồn mở, kết hợp KVM full virtualization và LXC containers trong cùng một giao diện…

Xem thêm

Password Manager: Bitwarden, 1Password và KeePass so sánh chi tiết

Password Manager là gì? Tại sao không nên dùng một mật khẩu cho mọi tài khoản Password Manager (trình quản lý mật khẩu) là ứng dụng lưu trữ, tạo ra,…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất