コンテンツにスキップ

Atuin

SQLiteストレージ、暗号化同期、マシンやセッション間のフルテキスト検索を備えたマジカルなシェル履歴マネージャー。

コマンド説明
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh公式スクリプトでインストール
brew install atuinmacOSにHomebrewでインストール
cargo install atuincrates.ioからインストール
pacman -S atuinArch Linuxにインストール
apt install atuinDebian/Ubuntuにインストール(利用可能な場合)
dnf install atuinFedoraにインストール
nix-env -i atuinNixOSにインストール
scoop install atuinWindowsにScoopでインストール
atuin --versionインストール済みバージョンを表示
コマンド説明
atuin init bash >> ~/.bashrcBash用に初期化
atuin init zsh >> ~/.zshrcZsh用に初期化
atuin init fish >> ~/.config/fish/config.fishFish用に初期化
atuin init nushellNushellの初期化コマンドを表示
# 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 bashBash履歴からインポート
atuin import zshZsh履歴からインポート
atuin import zsh-hist-dbZsh hist-dbプラグインからインポート
atuin import fishFish履歴からインポート
atuin import reshRESH履歴からインポート
atuin import nuNushell履歴からインポート
atuin import nu-hist-dbNushellの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;"
  1. まず既存の履歴をインポートする — インストール直後にatuin import autoを実行して、ゼロからではなく豊富な履歴データベースで開始しましょう。

  2. ファジー検索モードを使用する — 最も柔軟なマッチングのためにsearch_mode = "fuzzy"を設定しましょう。検索中にCtrl+Rで他のモードにいつでも切り替えられます。

  3. 履歴からシークレットをフィルタする — トークン、パスワード、APIキーを含むコマンドの記録を防ぐため、設定のhistory_filterにパターンを追加しましょう。

  4. 暗号化キーを保存するatuin keyを実行してキーをパスワードマネージャーに保存しましょう。キーを紛失すると、他のマシンからの同期履歴は永久に回復不能になります。

  5. マシン間の同期をセットアップする — 暗号化同期はAtuinのキラー機能です。アカウントを登録し、すべてのマシンを設定して統一された履歴をどこからでも利用しましょう。

  6. ディレクトリスコープ検索を使用する — 検索中にAlt+4を押すと、現在のディレクトリで実行したコマンドのみにフィルタできます。プロジェクト固有のワークフローに最適です。

  7. 上矢印キーをカスタマイズするfilter_mode_shell_up_key_binding = "host"を設定すると、上矢印キーは現在のマシンのコマンドのみを表示し、Ctrl+Rはグローバルに検索します。

  8. セルフホストサーバーをセットアップする — 機密データを扱う場合、Dockerで独自のAtuinサーバーを実行して、同期履歴を完全に管理しましょう。

  9. 定期的に統計を確認するatuin statsを定期的に実行してパターンを理解し、効率化のためにエイリアスにできるコマンドを特定しましょう。

  10. 小さなターミナルにはコンパクトスタイルを使用する — 垂直スペースが限られた分割ペインターミナルで作業する場合、style = "compact"を設定しましょう。