Skip to content
Go back

atuin: コマンド履歴管理ツール

Published:  at  12:00 AM

atuinはRust製のコマンド履歴管理ツール。コマンド履歴をローカルのSQLiteデータベースに保存し、履歴のFuzzy検索や端末間での同期などの機能を提供する。

普段からzsh組み込みの履歴検索(Control + R)を使っているが、思い通りにコマンド検索ができないことがあり、atuinを試してみることにした。

インストール

まずはatuinのバイナリをインストールする。以下で簡単にインストールできる:

curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh

~/.atuin/binにバイナリがインストールされる。HomebrewやCargo経由でもインストールできるので、詳細は公式ドキュメントを参照。

次に、atuinを利用するシェルごとに初期化設定を行う必要がある。

デフォルトのキーバインドでは、上矢印キーで履歴検索画面が表示されるが、無効化したい場合は--disable-up-arrow 指定する。自分の場合は少々ビジーに感じるので、無効している。

zshの場合:

echo 'eval "$(atuin init zsh --disable-up-arrow)"' >> ~/.zshrc

nushellの場合:

mkdir ~/.local/share/atuin/
atuin init nu --disable-up-arrow | save ~/.local/share/atuin/init.nu

コマンド履歴のインポート

インストール後の状態では、当然だがコマンド履歴は何も保存されていない。既存のhistoryをatuinにインポートするコマンドatuin importが用意されているので、これを使って履歴をインポートする。

zshの場合:

atuin import auto

nushellの場合:

atuin import nushell

コマンド履歴の検索

Control + Rもしくはatuin search -iで履歴検索のTUIを開くことができる。

検索ワードを入力すると、Fuzzy検索が行われ、履歴が絞り込まれる。

atuin-search

詳細な検索シンタックスは公式ドキュメントに記載されているが、fzfのシンタックスをベースとし、完全一致や前方一致、後方一致など、様々な検索方法が利用できる。

以下は、執筆時点での検索シンタックスの一覧を和訳した表:

トークン例マッチタイプ説明
sbtrktあいまい一致sbtrkt にマッチするアイテム
'wild完全一致wild を含むアイテム
^music前方完全一致music で始まるアイテム
.mp3$後方完全一致.mp3 で終わるアイテム
!fire逆完全一致fire を含まないアイテム
!^music逆前方完全一致music で始まらないアイテム
!.mp3$逆後方完全一致.mp3 で終わらないアイテム

|は、OR演算子として使える。例えば、次のクエリは「core」で始まり、「go」、「rb」、または「py」のいずれかで終わるエントリにマッチする:

^core go$ | rb$ | py$

Enterキーでの実行の無効化

デフォルトでは、検索画面でEnterキーを押下すると、選択中のコマンドがすぐに実行される。

少々危険なので、これは無効化している。atuinのconfigファイル(~/.config/atuin/config.toml)を編集する:

# ~/.config/atuin/config.toml
enter_accept = false

端末間の同期

atuinは、端末間の同期機能も特徴の一つだ。atuinの製作者がホストするサーバーか、セルフホストのサーバーを利用して、端末間で履歴を同期することができる。

同期機能はまだ試せていない。仕事で利用する場合は少々ハードルが高いが、個人利用であれば試してみてもいいかもしれない。通信はエンドツーエンドで暗号化されているとのこと。

代替的な端末間の移行方法として、ファイルをコピーする方法もある。atuin infoコマンドで、atuinの設定ファイルやデータベースのパスを確認できるので、ファイル群を端末間でコピーすればOK。ただし、公式のドキュメントにはこの方法について記載がなく、サポートされているわけではないようなので自己責任で行なってほしい。



Previous Post
pythonスクリプトをCLIツールとしてインストールする
Next Post
SatoriでのOGP画像生成に日本語フォントを使う - astro-paper向けガイド