🗓️

Terminalのコマンドの履歴表示をAtuinに変える

2024/02/25に公開

Termnialでbashなどを使用している際、コマンドの実行履歴は通常はhistoryコマンド等を使うと思います。

historyの代わりにAtuinというツールを使うと実行履歴の表示が便利になります。

https://atuin.sh/

以下がAtuinの履歴表示イメージです。

Atuin image

Atuinの特徴

  • ↑キーで起動
  • 好きな履歴をカーソルで選んでEnterで実行
  • 好きな履歴をカーソルで選んでTABでコマンドラインを編集し、実行
  • 履歴を検索して絞り込み
  • 複数のホスト上で履歴を共有*

*一番の特徴である、複数のホスト上での履歴共有はなぜか私の環境では動いていません…。

インストール

Macの場合

Macの場合はbrewでインストールできます。

brew install atuin

その後、~/.zshrcにatuinの設定を読み込む処理を追加します。

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

Terminalを起動し直せばAtuinが使えるようになっています。

Ubuntu + bashの場合

ble.shをインストール

bashの場合、ble.shと一緒に使わないと履歴が一部表示されなかったりしました。まずはble.shのインストールをします。

https://github.com/akinomyoga/ble.sh

rootではなく個人アカウントで実行。

git clone --recursive --depth 1 --shallow-submodules https://github.com/akinomyoga/ble.sh.git
make -C ble.sh install PREFIX=~/.local
echo 'source ~/.local/share/blesh/ble.sh' >> ~/.bashrc

autinをインストール

rootではなく個人アカウントで実行。

bash <(curl https://raw.githubusercontent.com/atuinsh/atuin/main/install.sh)

Terminalを起動し直せばAtuinが使えるようになっています。

履歴共有設定

履歴を複数マシンで共有する際には、atuin.shのアカウントを作成してログインしておく必要があります。

一台目のマシン

アカウントの作成をします。

atuin register -u <USERNAME> -e <EMAIL>

パスワードを聞かれるので入力します。

続いて同期の設定をします。

atuin import auto
atuin sync

二代目以後のマシン

atuin.shにログインします。

atuin login

アカウント、パスワードに加え、keyを聞かれるので入力します。keyは一台目のマシン、もしくは既にlogin済みの他のマシンで以下のコマンドを実行すると得られます。

# 既にatuin.shにログイン済みのマシンで実行する
atuin key

続いて同期の設定をします。

atuin import auto
atuin sync

簡単な使い方

履歴を選んで実行

コマンドプロンプト上でCTRL+Rまたはキーを押すと以下の履歴画面がTerminalいっぱいに表示されます。

Atuin image

緑色または赤色の時間はコマンドの実行にかかった時間です。緑はコマンドが正常終了、赤は異常終了したことを示しています。青の時間はコマンドの実行時刻を示しています。

左端の>で目的の履歴まで移動し、Enterを押すとそのコマンドが実行されます。
arrow

Enterの代わりにTABを押すと即時には実効せずに、コマンドプロンプト上に選択したコマンドラインが表示されます。コマンドラインのパラメータを変更して実行したい際に便利です。

なお、左端にある1-9の数字は、LinuxならALT + 数字, MacならOption + 数字を押すとその行のコマンドを実行できるらしいのですが、私の環境では何故か動きませんでした。

履歴の検索

下の検索窓にキーワードを入力すると、そのキーワードで履歴を絞り込んで表示できます。以下はdockerで検索した例です。
search

この検索は曖昧検索となっており、以下のようにdckerとスペルミスしてもちゃんとdockerを検索してくれます。検索したいコマンドがあやふやでも検索できるので便利です。

fuzzy search

曖昧検索をしたくない場合は頭にシングルクォートを付けて'dockerのようにすると、正確にキーワードとマッチした履歴のみ表示します。

表示モード

履歴画面の左下にある[ HOST ]は表示がHOSTモードであることを示しています。モードには以下の種類があります。

モード 意味
GLOBAL 全てのホストの履歴を統合して表示する。(私の環境では動いていない…)
HOST そのHOST上の履歴を統合して表示する。
SESSION そのTerminalで実行した履歴のみを表示する。
DIRECTORY カレントディレクトリ上で実行した履歴のみを表示する。

各モードは履歴画面でCTRL + Rを押すことで切り替えられます。起動時は[ GLOBAL ]ですが、設定ファイルで変更可能です。

カスタマイズ

~/.config/atuin/config.tomlの内容を編集することでカスタマイズが可能です。設定内容は下記ページを参照してください。

https://docs.atuin.sh/configuration/config/

おすすめ設定

show_previewをtrueに設定します。

~/.config/atuin/config.toml
show_preview = true

すると以下のように画面の下にコマンドラインのプレビューが表示されます。履歴上でコマンドラインが長く、Terminalをはみ出してしまう場合にプレビュー上で全体を確認できて便利です。

preview

Discussion