SQLite 저장소, 암호화된 동기화, 머신과 세션 간 전문 검색을 지원하는 마법 같은 셸 히스토리 관리자.
| 명령어 | 설명 |
|---|
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh | 공식 스크립트로 설치 |
brew install atuin | macOS에서 Homebrew로 설치 |
cargo install atuin | crates.io에서 설치 |
pacman -S atuin | Arch Linux에서 설치 |
apt install atuin | Debian/Ubuntu에서 설치 (사용 가능한 경우) |
dnf install atuin | Fedora에서 설치 |
nix-env -i atuin | NixOS에서 설치 |
scoop install atuin | Windows에서 Scoop으로 설치 |
atuin --version | 설치된 버전 확인 |
| 명령어 | 설명 |
|---|
atuin init bash >> ~/.bashrc | Bash용 초기화 |
atuin init zsh >> ~/.zshrc | Zsh용 초기화 |
atuin init fish >> ~/.config/fish/config.fish | Fish용 초기화 |
atuin init nushell | Nushell 초기화 명령 표시 |
# Bash — ~/.bashrc에 추가
eval "$(atuin init bash)"
# Zsh — ~/.zshrc에 추가
eval "$(atuin init zsh)"
# Fish — ~/.config/fish/config.fish에 추가
atuin init fish | source
# Zsh에서 위쪽 화살표 비활성화 (Ctrl+R만 사용)
eval "$(atuin init zsh --disable-up-arrow)"
| 명령어 | 설명 |
|---|
Ctrl + R | 대화형 히스토리 검색 열기 |
Ctrl + R 후 검색어 입력 | 대화형으로 히스토리 필터링 |
Enter | 선택한 명령 실행 |
Tab | 실행하지 않고 명령 삽입 |
Ctrl + R 다시 누르기 | 검색 모드 순환 |
↑ / ↓ | 검색 결과 탐색 |
Escape | 검색 취소 |
Ctrl + D | 선택한 항목을 히스토리에서 삭제 |
Alt + 1-4 | 필터 모드 전환 (전체/호스트/세션/디렉토리) |
| 명령어 | 설명 |
|---|
atuin history list | 최근 명령 히스토리 표시 |
atuin history list --cmd-only | 명령만 표시 (메타데이터 없음) |
atuin history list --format "{time} {command}" | 사용자 정의 출력 형식 |
atuin history list --reverse | 오래된 순으로 표시 |
atuin history list -n 50 | 최근 50개 명령 표시 |
atuin history count | 전체 히스토리 수 표시 |
atuin history last | 가장 최근 명령 표시 |
Atuin은 Ctrl+R로 4가지 검색 모드를 순환합니다:
1. Fuzzy — 어떤 순서로든 문자 매칭 (fzf처럼)
2. Prefix — 명령 시작부터 매칭
3. Fulltext — 어디서든 정확한 부분 문자열 매칭
4. Skim — Skim 스타일 퍼지 매칭
검색 중 Ctrl+R로 모드를 전환하거나 설정 파일에서
기본값을 설정하세요.
| 명령어 | 설명 |
|---|
atuin search query | 명령줄에서 히스토리 검색 |
atuin search "git commit" | 특정 명령 검색 |
atuin search --cwd | 현재 디렉토리만 히스토리 검색 |
atuin search --session | 현재 세션만 히스토리 검색 |
atuin search --global | 머신 전체의 모든 히스토리 검색 |
atuin search --interactive | 대화형 UI 열기 |
| 명령어 | 설명 |
|---|
atuin search --after "2024-01-01" | 특정 날짜 이후 검색 |
atuin search --before "yesterday" | 특정 시간 이전 검색 |
atuin search --after "1 hour ago" | 최근 1시간 이내 검색 |
atuin search --after "3 days ago" | 최근 3일 이내 검색 |
atuin search --after "last week" | 최근 1주일 이내 검색 |
atuin search --before "2024-06-01" --after "2024-01-01" | 날짜 범위 |
| 명령어 | 설명 |
|---|
atuin search --exit 0 | 성공한 명령만 검색 |
atuin search --exit 1 | 실패한 명령만 검색 |
atuin search --exit 127 | ”명령을 찾을 수 없음” 오류 검색 |
atuin search --limit 50 | 결과 수 제한 |
| 명령어 | 설명 |
|---|
atuin search --cwd /path/to/dir | 특정 작업 디렉토리로 필터링 |
atuin search --hostname myserver | 호스트명으로 필터링 |
atuin search --session SESSION_ID | 세션 ID로 필터링 |
atuin search --duration ">5s" | 실행 시간으로 필터링 |
atuin search --duration "<100ms" | 빠른 명령 찾기 |
| 명령어 | 설명 |
|---|
atuin search --format "{time} {command}" | 시간과 명령 표시 |
atuin search --format "{duration} {command}" | 실행 시간과 명령 표시 |
atuin search --format "{host} {command}" | 호스트명과 명령 표시 |
atuin search --format "{user} {directory} {command}" | 전체 컨텍스트 |
# 실패한 모든 docker 명령 찾기
atuin search docker --exit 1
# 지난주의 git 작업 찾기
atuin search git --after "1 week ago"
# 오래 실행된 명령 찾기 (30초 이상)
atuin search --duration ">30s"
# 특정 프로젝트에서 실행한 명령 찾기
atuin search --cwd ~/projects/myapp
# 업무용 노트북에서 실행한 명령 찾기
atuin search --hostname work-mbp
| 명령어 | 설명 |
|---|
atuin register -u username -e email -p password | 동기화 계정 생성 |
atuin login -u username -p password | 동기화 계정 로그인 |
atuin login -u username -p password -k KEY | 암호화 키로 로그인 |
atuin logout | 동기화 계정 로그아웃 |
atuin account | 계정 상태 표시 |
atuin account delete | 동기화 계정 삭제 |
atuin key | 암호화 키 표시 (반드시 저장하세요!) |
atuin status | 동기화 상태 표시 |
| 명령어 | 설명 |
|---|
atuin sync | 서버와 히스토리 동기화 |
atuin sync -f | 전체 동기화 강제 |
atuin sync --force | 모든 히스토리 강제 재업로드 |
| 모든 데이터는 종단간 암호화 | 서버는 평문 히스토리를 볼 수 없음 |
# 머신 1에서 최초 설정
atuin register -u myname -e me@example.com -p mypassword
atuin key # 이 키를 저장하세요 — 다른 머신에서 필요합니다
atuin sync
# 머신 2에서 설정
atuin login -u myname -p mypassword -k YOUR_ENCRYPTION_KEY
atuin sync
# 암호화 키는 다음과 같습니다:
# abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890
# 키 없이는 서버가 히스토리를 복호화할 수 없습니다.
# 키를 잃어버리면 동기화된 히스토리는 복구 불가능합니다.
# 자체 Atuin 동기화 서버 실행
docker run -d \
--name atuin-server \
-p 8888:8888 \
-v atuin-data:/config \
ghcr.io/atuinsh/atuin:latest \
server start
# 클라이언트를 자체 호스팅 서버로 지정
# ~/.config/atuin/config.toml에서:
# sync_address = "http://your-server:8888"
| 명령어 | 설명 |
|---|
atuin import auto | 셸 히스토리 자동 감지 및 가져오기 |
atuin import bash | Bash 히스토리에서 가져오기 |
atuin import zsh | Zsh 히스토리에서 가져오기 |
atuin import zsh-hist-db | Zsh hist-db 플러그인에서 가져오기 |
atuin import fish | Fish 히스토리에서 가져오기 |
atuin import resh | RESH 히스토리에서 가져오기 |
atuin import nu | Nushell 히스토리에서 가져오기 |
atuin import nu-hist-db | Nushell SQLite 히스토리에서 가져오기 |
# 셸을 자동 감지하고 가져오기
atuin import auto
# Zsh 히스토리 구체적으로 가져오기
atuin import zsh
# 가져온 항목 수 확인
atuin history count
# 가져오기가 작동하는지 확인
atuin search --limit 5
| 명령어 | 설명 |
|---|
atuin stats | 히스토리 통계 표시 |
atuin stats --count 20 | 가장 많이 사용한 상위 20개 명령 표시 |
atuin stats --period day | 오늘의 통계 |
atuin stats --period week | 이번 주 통계 |
atuin stats --period month | 이번 달 통계 |
atuin stats --period all | 전체 기간 통계 |
atuin history count | 전체 히스토리 항목 수 |
$ atuin stats --count 10
┌─────────┬─────────────────┬───────┐
│ Rank │ Command │ Count │
├─────────┼─────────────────┼───────┤
│ 1 │ git status │ 1847 │
│ 2 │ ls │ 1523 │
│ 3 │ cd │ 1201 │
│ 4 │ git diff │ 987 │
│ 5 │ vim │ 842 │
│ 6 │ git add │ 756 │
│ 7 │ docker ps │ 689 │
│ 8 │ npm run │ 534 │
│ 9 │ git commit │ 498 │
│ 10 │ make │ 423 │
└─────────┴─────────────────┴───────┘
전체 명령 수: 45,231
고유 명령 수: 8,432
| 명령어 | 설명 |
|---|
~/.config/atuin/config.toml | 메인 설정 파일 |
atuin default-config | 기본 설정 출력 |
| 명령어 | 설명 |
|---|
search_mode = "fuzzy" | 퍼지 검색 모드 설정 |
search_mode = "prefix" | 접두사 검색 모드 설정 |
search_mode = "fulltext" | 전문 검색 모드 설정 |
search_mode = "skim" | skim 퍼지 검색 모드 설정 |
filter_mode = "global" | 기본적으로 모든 히스토리 검색 |
filter_mode = "host" | 기본적으로 현재 호스트 검색 |
filter_mode = "session" | 기본적으로 현재 세션 검색 |
filter_mode = "directory" | 기본적으로 현재 디렉토리 검색 |
filter_mode_shell_up_key_binding = "session" | 위쪽 화살표로 현재 세션 검색 |
| 명령어 | 설명 |
|---|
style = "compact" | 컴팩트 UI 스타일 사용 |
style = "full" | 전체 UI 스타일 사용 |
style = "auto" | 터미널에 따라 자동 감지 |
inline_height = 40 | 인라인 검색 높이 설정 |
show_preview = true | 명령 미리보기 패널 표시 |
show_help = true | 키 바인딩 도움말 표시 |
show_tabs = true | 필터 모드 탭 표시 |
max_preview_height = 4 | 미리보기 최대 줄 수 |
# ~/.config/atuin/config.toml
## 데이터베이스 설정
db_path = "~/.local/share/atuin/history.db"
## 검색 설정
search_mode = "fuzzy"
filter_mode = "global"
filter_mode_shell_up_key_binding = "host"
## UI 설정
style = "auto"
inline_height = 40
show_preview = true
show_help = true
show_tabs = true
max_preview_height = 4
invert = false
## 히스토리 설정
update_check = true
sync_frequency = "5m"
sync_address = "https://api.atuin.sh"
## 키 바인딩 (기본값)
# Ctrl+R = 검색
# 위쪽 화살표 = 검색 (비활성화하지 않은 경우)
# Tab = 실행하지 않고 수락
# Enter = 수락 및 실행
## 비밀 필터 — 비밀이 포함된 명령을 기록하지 않음
history_filter = [
"^export.*TOKEN",
"^export.*SECRET",
"^export.*PASSWORD",
"^export.*KEY",
".*AWS_SECRET.*",
]
## 특정 명령 무시
history_filter = [
"^ls$",
"^cd$",
"^pwd$",
"^exit$",
"^clear$",
]
## 동기화 설정
sync_frequency = "5m"
# sync_address = "https://api.atuin.sh" # 기본 서버
# sync_address = "http://localhost:8888" # 자체 호스팅
| 키 | 설명 |
|---|
Ctrl + R | 검색 열기 / 검색 모드 순환 |
↑ / ↓ | 결과 탐색 |
Enter | 선택한 명령 실행 |
Tab | 실행하지 않고 명령 삽입 |
Escape | 검색 취소 |
Ctrl + D | 선택한 히스토리 항목 삭제 |
Alt + 1 | 전체 필터로 전환 |
Alt + 2 | 호스트 필터로 전환 |
Alt + 3 | 세션 필터로 전환 |
Alt + 4 | 디렉토리 필터로 전환 |
Ctrl + U | 검색 쿼리 지우기 |
Ctrl + W | 단어 역방향 삭제 |
| 명령어 | 설명 |
|---|
~/.local/share/atuin/history.db | 기본 데이터베이스 위치 |
| 데이터베이스는 SQLite 형식 사용 | 모든 SQLite 도구로 쿼리 가능 |
sqlite3 ~/.local/share/atuin/history.db ".tables" | 데이터베이스 테이블 나열 |
# SQLite로 데이터베이스 직접 열기
sqlite3 ~/.local/share/atuin/history.db
# 전체 항목 수 세기
sqlite3 ~/.local/share/atuin/history.db \
"SELECT COUNT(*) FROM history;"
# 가장 오래 실행된 명령 찾기
sqlite3 ~/.local/share/atuin/history.db \
"SELECT command, duration FROM history
ORDER BY duration DESC LIMIT 10;"
# 디렉토리별 명령
sqlite3 ~/.local/share/atuin/history.db \
"SELECT cwd, COUNT(*) as cnt FROM history
GROUP BY cwd ORDER BY cnt DESC LIMIT 10;"
-
기존 히스토리를 먼저 가져오기 — 설치 직후 atuin import auto를 실행하여 처음부터가 아닌 풍부한 히스토리 데이터베이스로 시작하세요.
-
퍼지 검색 모드 사용 — 가장 유연한 매칭을 위해 search_mode = "fuzzy"를 설정하세요. 검색 중 Ctrl+R로 언제든지 다른 모드로 전환할 수 있습니다.
-
히스토리에서 비밀 필터링 — 토큰, 비밀번호, API 키가 포함된 명령의 기록을 방지하기 위해 설정의 history_filter에 패턴을 추가하세요.
-
암호화 키 저장 — atuin key를 실행하고 비밀번호 관리자에 키를 보관하세요. 키를 잃어버리면 다른 머신에서 동기화된 히스토리는 영구적으로 복구 불가능합니다.
-
머신 간 동기화 설정 — 암호화된 동기화는 Atuin의 핵심 기능입니다. 계정을 등록하고 모든 머신을 설정하여 어디서나 통합 히스토리를 사용하세요.
-
디렉토리 범위 검색 사용 — 검색 중 Alt+4를 눌러 현재 디렉토리에서 실행한 명령만 필터링하세요 — 프로젝트별 워크플로우에 완벽합니다.
-
위쪽 화살표 사용자 정의 — 위쪽 화살표가 현재 머신의 명령만 표시하도록 filter_mode_shell_up_key_binding = "host"를 설정하고, Ctrl+R은 전체 검색에 사용하세요.
-
자체 호스팅 서버 설정 — 민감한 데이터를 다루는 경우 Docker로 자체 Atuin 서버를 실행하여 동기화된 히스토리를 완전히 제어하세요.
-
정기적으로 통계 확인 — 주기적으로 atuin stats를 실행하여 패턴을 파악하고 효율성을 위해 별칭을 만들 수 있는 명령을 식별하세요.
-
작은 터미널에 컴팩트 스타일 사용 — 분할 창 터미널에서 수직 공간이 제한된 경우 style = "compact"를 설정하세요.