Atuin - bashやzshの履歴機能をSQLiteで置き換えて強化するユーティリティ

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

S 20240223 135946

bashやzsh、fishのようなモダンなインタラクティブシェルには、過去に入力した内容を検索・再利用することができる「履歴機能」が搭載されています。

シェルに組み込まれた履歴機能を活用することでコマンド入力の効率を高めることができますが、さらに上を目指すならば「Atuin」を検討してみると良いかもしれません。

Atuinは、既存のシェル履歴をSQLiteデータベースで置き換え、実行したコマンドや追加情報を保存することができるオープンソースツールです。エンドツーエンドの暗号化に対応した同期機能を利用して、複数のマシンで同じ履歴を利用することもできます。同期サーバーは無料で利用でき、自分でサーバーを立てることもできます。

Atuinは以下のシェルに対応しています。

  • zsh
  • bash
  • fish
  • nushell
  • xonsh

以下使用方法を説明します。

目次

Atuinのセットアップ

AtuinはRustで作られたオープンソースツールです。Rustのパッケージ管理ツールcargoを使ってインストールすることもできますが、macOSの場合は、HomebrewやMacPortsを使った方が簡単だと思います。

Homebrewの場合:

brew install atuin

MacPortsの場合:

sudo port install atuin

atuinコマンドが利用できるようになったら、以下を実行します。atuin registerは公式の同期サーバーを利用しない場合は不要です。

atuin register -u  -e 
atuin import auto
atuin sync

atuinは単体のコマンドとしても利用することができますが、シェルに組み合わせて使用するのが便利です。これにはシェルプラグインを利用します。

zshの場合:

echo 'eval "$(atuin init zsh)"' >> ~/.zshrc

bashの場合:

echo 'eval "$(atuin init bash)"' >> ~/.bashrc

Atuinの使用方法

シェルプラグインの設定が完了すると↑(上矢印)や、Ctrl + rでAtuinの履歴検索機能を呼び出すことができるようになります。

履歴表示方法はいくつか選べますが
デフォルト設定の場合、枠の中に履歴一覧が表示されます。

S 20240223 143222

▲文字を入力してコマンドをファジー検索して絞り込むことができます。

S 20240223 143651

▲赤く表示されているのが現在選択されているコマンドです。Enterキーを押すとそのコマンドが直接実行され、Tabキーを押すとその内容がターミナルに貼り付けられます。

利用できるショートカットキーは以下の通りです。

Shortcut Action
enter 選択したアイテムを実行
tab アイテムを選択し編集
ctrl + r フィルターモードのサイクル
ctrl + s 検索モードのサイクル
alt + 1 to alt + 9 アイテムを番号で選択
ctrl + c / ctrl + d / ctrl + g / esc 元に戻る
ctrl + y 選択したアイテムをクリップボードに戻る
ctrl + ⬅︎ / alt + b カーソルを前のワードに移動
ctrl + ➡️ / alt + f カーソルを次のワードに移動
ctrl + b / ⬅︎ カーソルを左に移動
ctrl + f / ➡️ カーソルを右に移動
ctrl + a / home カーソルを行頭に移動
ctrl + e / end カーソルを行末に移動
ctrl + backspace / ctrl + alt + backspace 前のワードを削除 / カーソルの直前のワードを削除
ctrl + delete / ctrl + alt + delete 次のワードを削除 / カーソルの直後のワードを削除
ctrl + w カーソルの前のワードが単語境界をまたいでいても削除
ctrl + u カーソルライン来をクリアー
ctrl + n / ctrl + j / ⬆ 次のアイテムを選択
ctrl + p / ctrl + k / ⬇ 前のアイテムを選択
page down 検索結果を1ページ下にスクロール
page up 検索結果を1ページ上にスクロール
⬇ (with no entry selected) オリジナルを返すか、クエリーを返すか。
リストの次のアイテムを選択

キーバインドは他にもVimモードが存在し、設定で有効にすることができます。

設定ファイルは~/.cofnig/atuin/config.tomlで、例えばstyle="compact"にすると、次のように表示されます。

S 20240223 145335

▲compactモードでは枠線が表示されません。iTerm2の場合「Ambiguous characters are double-width」にチェックしていると枠線がずれて正しく表示されないため、この表示方法を選択した方がよいかもしれません。

まとめ

Atuinはシェルの履歴機能を強化するユーティリティです。以前のブログ記事「長いシェル履歴保持のススメ」でもAtuinの名前を紹介しました。実際に使ってみたい方の参考になれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次