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" | 先週以内を検索 |
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"を設定しましょう。