atuinの使い方完全ガイド【インストールから応用まで】
開発者の皆さん、日々のシェル操作でこんな経験はありませんか?
ターミナルを閉じると、それまでの貴重なコマンド履歴がどこかへ消えてしまう。複数のサーバーやコンテナで作業していると、それぞれの環境で履歴がバラバラになり、過去のコマンドを探すのが困難になる。特にリモート開発環境では、セッションが終了すると履歴も失われがちです。
そんな時、「あの時使ったコマンドは何だっただろう?」「別のPCで実行したあの設定、もう一度使いたいな」と、もどかしい思いをすることも少なくありません。これは、従来のシェル履歴管理が、各セッションや各マシンに閉じていたためです。
しかし、もしあなたのすべてのシェル履歴が、どの端末からでも、どのセッションからでも、瞬時に検索・再利用できたらどうでしょうか。さらに、それが暗号化されて安全に同期され、まるで魔法のようにあなたの開発環境に統一されたら?
今回ご紹介するCLIツール「atuin」は、まさにその「魔法」を実現します。もう履歴の消失や断片化に悩む必要はありません。atuinがあなたのシェル操作を次のレベルへと引き上げます。
atuinとは
atuinは、従来のシェル履歴管理システムを強力なSQLiteデータベースに置き換えるCLIツールです。単にコマンドを記録するだけでなく、実行時刻、終了コード、作業ディレクトリ、ホスト名、セッションID、コマンドの実行時間といった豊富なコンテキスト情報も同時に保存します。これにより、従来の履歴にはなかった高度な検索と分析が可能になります。
atuinの大きな特徴は、このシェル履歴をエンドツーエンドで暗号化し、複数の端末間で安全に同期できる点です。これにより、自宅のPC、職場のPC、リモートサーバー、開発コンテナなど、どの環境で作業していても、常に最新かつ統一されたシェル履歴にアクセスできます。
atuinが誕生した背景には、現代の開発者が直面する「履歴の断片化」という課題があります。クラウド環境やコンテナ技術の普及により、一時的な開発環境が増え、従来のシェル履歴ファイル(例: .bash_history)では、履歴の管理が困難になりました。atuinは、この問題を解決し、開発者の生産性を飛躍的に向上させるために開発されました。
インストール方法
atuinのインストールは非常に簡単です。以下の手順でセットアップし、あなたのシェルに統合しましょう。
1. インストールスクリプトの実行
atuinのインストールは、公式が提供するスクリプトを利用するのが最も手軽です。
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
このコマンドは、macOS、Linux、Windows (WSL) など、多くのUnix系環境で動作します。
2. atuinへの登録と初回同期
インストールが完了したら、atuinクラウド同期サーバーにユーザー登録し、既存のシェル履歴をインポートします。
まず、ユーザー名とメールアドレスを指定して登録します。
atuin register -u <ユーザー名> -e <メールアドレス>
次に、既存のシェル履歴をatuinにインポートします。
atuin import auto
これにより、これまでのシェル履歴がatuinのデータベースに移行されます。
最後に、初回同期を実行します。
atuin sync
このコマンドで、あなたの履歴が暗号化されてatuinクラウドサーバーにアップロードされます。
3. シェルへの統合
atuinをシェルに統合するためには、設定ファイルに追記が必要です。インストールスクリプトが自動的に設定を試みますが、手動で確認・設定することもできます。
各シェルの設定ファイルに、atuin init <shell_name> の出力を追加します。
Bashの場合
~/.bashrc または ~/.bash_profile に以下の行を追加します。
eval "$(atuin init bash)"
Zshの場合
~/.zshrc に以下の行を追加します。
eval "$(atuin init zsh)"
Fishの場合
~/.config/fish/config.fish に以下の行を追加します。
atuin init fish | source
設定を終えたら、シェルを再起動するか、設定ファイルを再読み込みします。
# Bash/Zshの場合
source ~/.bashrc # または ~/.zshrc
# Fishの場合
source ~/.config/fish/config.fish
これでatuinがあなたのシェルに統合され、コマンド履歴の記録と管理が開始されます。
基本的な使い方
atuinをインストールしたら、まずはその強力な履歴検索機能を試してみましょう。最低限これだけ知っていれば、atuinの恩恵をすぐに感じられます。
1. フルスクリーン履歴検索 (Ctrl+R)
atuinの最も特徴的な機能は、Ctrl+R(デフォルト)キーバインドによるフルスクリーン履歴検索UIです。
ターミナルで Ctrl+R を押すと、全画面表示の検索インターフェースが開きます。
# 何も入力しない状態で Ctrl+R を押す
検索UIに入ったら、キーワードを入力して履歴を絞り込みます。上下矢印キーで候補を選択し、Enter キーで選択したコマンドを実行できます。Tab キーを押すと、選択したコマンドが現在のプロンプトに挿入され、編集してから実行できます。
また、検索UI内で Ctrl+R を再度押すと、検索モードを切り替えられます。
- グローバル検索: すべての履歴から検索します。
- セッション内検索: 現在のシェルセッションの履歴のみを検索します。
- ディレクトリ内検索: 現在の作業ディレクトリで実行された履歴のみを検索します。
この機能により、過去に実行したコマンドを瞬時に見つけ出し、再利用することが格段に容易になります。
2. 履歴の同期 (atuin sync)
atuinの真価は、複数端末間での履歴同期にあります。別の端末で作業を開始する際や、最新の履歴をクラウドにバックアップしたい場合に利用します。
atuin sync
このコマンドを実行すると、ローカルの履歴がatuinクラウドサーバーにアップロードされ、サーバー上の履歴がローカルにダウンロードされます。これにより、すべての端末で履歴が統一されます。
3. 既存履歴のインポート (atuin import auto)
もしatuinを導入する前に、大量のシェル履歴ファイル(例: .bash_history, .zsh_history)がある場合、それらをatuinのデータベースにインポートできます。
atuin import auto
このコマンドは、atuinがサポートするシェルの既存履歴ファイルを自動的に検出し、atuinのデータベースに統合します。一度実行すれば、過去のコマンドもatuinの強力な検索対象となります。
4. 履歴の表示 (atuin history list)
atuinが管理している履歴の全件または一部を一覧表示したい場合は、atuin history list コマンドを使用します。
atuin history list
このコマンドは、atuinデータベースに保存されている最新の履歴から順に表示します。オプションを組み合わせることで、表示内容をカスタマイズできます。
例えば、直近10件の履歴を表示するには、次のようにします。
atuin history list --limit 10
これらの基本的なコマンドを使いこなすだけで、あなたのシェル履歴管理は劇的に改善されるでしょう。
便利な使い方・応用例 3選
atuinは単なる履歴ツールではありません。その豊富なコンテキスト情報を活用することで、より高度な操作や分析が可能になります。ここでは、実際の開発シーンで役立つ応用例を3つ紹介します。
1. 特定の条件で履歴を絞り込み検索する
atuinは、コマンドの文字列だけでなく、実行時刻、終了コード、作業ディレクトリなど、さまざまな条件で履歴を検索できます。これにより、「あの時、成功したあのコマンド」や「特定のプロジェクトで使ったあの設定」をピンポイントで見つけ出すことができます。
例1: 成功した特定のコマンドを探す
例えば、make コマンドが正常に終了した履歴だけを検索したい場合、--exit 0 オプションを使用します。終了コード は、コマンドがエラーなく完了したことを示します。
atuin search --exit 0 make
例2: 特定の日時以降に実行したコマンドを探す
「昨日午後3時以降に実行した git push コマンドを思い出したい」といった場合、--after オプションが役立ちます。
atuin search --after "yesterday 3pm" git push
日付や時刻の指定は、「last monday」や「2 days ago」のように柔軟に記述できます。
例3: 特定のディレクトリで実行したコマンドを探す
例えば、特定のプロジェクトディレクトリ (~/projects/my-app) で実行した docker-compose コマンドだけを検索したいとします。--cwd オプションを使い、現在の作業ディレクトリに絞って検索することも、特定のパスを指定して検索することも可能です。
# 現在のディレクトリで実行した docker-compose コマンドを検索
atuin search --cwd docker-compose
# 特定のパスで実行した ls コマンドを検索
atuin search --cwd "/home/user/projects/my-app" ls
これらの絞り込み検索を組み合わせることで、膨大な履歴の中から目的のコマンドを瞬時に見つけ出すことができます。
2. コマンドの利用状況を統計分析する
atuinは、あなたのコマンド利用状況を統計的に分析する機能も持っています。これにより、普段よく使うコマンドや、特定の期間でのコマンド利用傾向を把握できます。
atuin stats
このコマンドを実行すると、以下のような情報が表示されます。
- 最も使用されたコマンドトップ10
- 日ごとのコマンド実行回数
- 総コマンド数
- atuinが記録を開始してからの期間
例えば、git コマンドが全体でどれくらい使われているか、docker コマンドが特定の日に集中して使われたか、といった傾向を視覚的に把握できます。これにより、自身のCLI操作の習慣を見直したり、よく使うコマンドをエイリアス化するヒントを得たりできます。
3. リモート開発環境での履歴を統一する
クラウドIDE、VS Code Remote Development、SSH接続によるリモートサーバーなど、一時的または複数存在する開発環境では、従来のシェル履歴が機能しにくい問題があります。atuinは、このような環境でこそ真価を発揮します。
例えば、VS CodeのRemote Containersで開発しているとします。通常、コンテナを破棄するとその中の履歴も失われます。しかし、コンテナ内にatuinをインストールし、同じユーザーアカウントでログイン・同期設定を行っておけば、そのコンテナ内で実行したコマンド履歴もatuinクラウドサーバーに保存されます。
これにより、別の新しいコンテナを立てても、あるいはローカル環境に戻っても、以前のコンテナで実行した履歴が atuin sync 一発で利用可能になります。リモートサーバーや複数の仮想マシンを行き来する開発者にとって、この統一された履歴管理は、作業効率を大幅に向上させる強力な武器となります。履歴の消失を気にすることなく、安心して開発に集中できる環境が手に入るのです。
他ツールとの組み合わせ
atuinは単体でも強力ですが、他のCLIツールや開発環境と組み合わせることで、その利便性はさらに向上します。
1. シェル(zsh, bash, fish)との連携
atuinは、zsh、bash、fishといった主要なシェルに深く統合されます。atuin init <shell_name> コマンドで生成される設定をシェル設定ファイルに追記することで、以下の恩恵を受けられます。
Ctrl+Rキーバインドの乗っ取り: シェルのデフォルトの履歴検索ではなく、atuinの強力なフルスクリーン検索UIが起動します。- コマンド実行時の自動記録: コマンドが実行されるたびに、そのコマンドと関連するコンテキスト情報(終了コード、実行時間など)がatuinデータベースに自動的に記録されます。
- 履歴のリアルタイム同期: シェルセッション間で履歴が自動的に共有され、他の端末で実行された履歴もすぐに利用可能になります。
例えば、zshユーザーであれば、oh-my-zsh などのフレームワークと併用しても問題なく動作します。既に豊富なプラグインを利用している環境でも、atuinはスムーズに組み込める設計です。
2. ターミナルマルチプレクサ(tmux/screen)との連携
tmux や screen といったターミナルマルチプレクサを使用している場合、atuinはさらにその価値を高めます。
通常のシェル履歴は、各シェルセッションに紐付けられることが多いです。しかし、atuinはシェルセッションを超えて履歴を管理するため、tmux のウィンドウやペインを切り替えても、同じ履歴データベースにアクセスできます。また、tmux セッションをデタッチして再アタッチしても、その間に実行されたコマンドも含め、すべての履歴がatuinによって管理されます。
これにより、複数の作業を並行して行う際や、長時間にわたる作業セッションでも、一貫した履歴管理が可能になります。
3. dotfiles管理ツールとの連携
dotfiles (設定ファイル) をGitなどで管理している場合、atuinの設定ファイルも一緒に管理することをお勧めします。atuinの設定ファイルは通常 ~/.config/atuin/config.toml に配置されます。
このファイルを dotfiles リポジトリに含め、シンボリックリンクを張ることで、新しい環境をセットアップする際にatuinの設定も簡単に復元できます。キーバインドのカスタマイズや表示設定など、自分好みのatuin環境をどのマシンでも素早く再現できるようになります。
# 例: dotfilesリポジトリにatuinの設定を移動し、シンボリックリンクを作成
mkdir -p ~/.config/atuin
mv ~/.config/atuin/config.toml ~/dotfiles/atuin/config.toml
ln -s ~/dotfiles/atuin/config.toml ~/.config/atuin/config.toml
このようにatuinを他のツールと組み合わせることで、より統一され、効率的な開発環境を構築できます。
よくある設定・カスタマイズ
atuinは非常に柔軟に設定をカスタマイズできます。設定ファイルは通常 ~/.config/atuin/config.toml にあります。このファイルを編集することで、キーバインド、検索UIの見た目、履歴の保存設定などを変更できます。
以下に、よくある設定項目とその例を紹介します。
1. キーバインドの変更
デフォルトでは Ctrl+R がatuinの検索UIを起動しますが、これを他のキーに変更したり、Up 矢印キーで検索を有効にしたりできます。
# ~/.config/atuin/config.toml の例
# Ctrl+R のキーバインドを無効にする (デフォルトは true)
# disable_up_arrow_key = false
# Up矢印キーで atuins の検索UIを起動する (デフォルトは false)
# enter_with_up = true
# Ctrl+R の代わりに Alt+R で検索UIを起動する場合
# key_bindings = [
# { key = "Alt+r", command = "search" },
# ]
enter_with_up = true に設定すると、通常の履歴検索のように Up キーを押すだけでatuinの検索UIが開くようになり、より直感的に操作できます。
2. 検索UIの表示スタイル
atuinの検索UIは、表示される色やスタイルをカスタマイズできます。これは styles セクションで定義します。
# ~/.config/atuin/config.toml の例
[styles]
# 検索UIの背景色 (ターミナルのデフォルトに合わせる)
# background = "default"
# 検索UIのボーダー色
# border = "blue"
# 選択中のアイテムの背景色
# selection_background = "blue"
# 選択中のアイテムの文字色
# selection_foreground = "white"
# 検索プロンプトの文字色
# prompt_foreground = "green"
# 検索結果の文字色
# text_foreground = "default"
これらの値を変更することで、お好みのテーマやターミナルの配色に合わせた見た目に調整できます。例えば、catppuccin/atuin のようなプロジェクトは、atuinのテーマ設定を提供しています。
3. 履歴の保存設定
atuinが保存する履歴の最大件数や、特定のコマンドを履歴から除外する設定も可能です。
# ~/.config/atuin/config.toml の例
# 履歴の最大件数 (デフォルトは 10000)
# max_history_entries = 50000
# 履歴に保存しないコマンドのリスト
# history_filter = [
# "clear",
# "exit",
# "ls",
# "cd",
# ]
# 特定のコマンドを完全に無視する (atuinに記録されない)
# history_ignore = [
# "password",
# "secret",
# ]
history_filter は、検索時に除外するコマンドを指定します。history_ignore は、そもそもatuinに記録しないコマンドを指定します。パスワードや機密情報を含む可能性のあるコマンドは history_ignore に追加すると良いでしょう。
これらの設定を適切にカスタマイズすることで、より快適で安全なatuin環境を構築できます。設定ファイルを変更した後は、シェルを再起動するか、atuin client reload コマンドを実行して変更を適用してください。
今日からできる実行プラン
atuinの導入は、あなたの開発体験を大きく変える第一歩です。以下の3つのステップで、今日からatuinを使い始めましょう。
ステップ1: atuinをインストールする
まずは、atuinをあなたの環境にインストールします。macOS、Linux、WSLなど、主要なUnix系環境で動作します。
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
このコマンドを実行するだけで、atuinのバイナリがダウンロードされ、適切な場所に配置されます。
ステップ2: ユーザー登録と既存履歴のインポート、初回同期を行う
インストールが完了したら、atuinクラウド同期サーバーにユーザー登録を行います。これにより、複数端末での履歴同期が可能になります。
atuin register -u <あなたのユーザー名> -e <あなたのメールアドレス>
次に、これまでのシェル履歴をatuinのデータベースにインポートします。
atuin import auto
そして、初回同期を実行し、履歴をatuinクラウドサーバーにアップロードします。
atuin sync
ステップ3: シェルを再起動し、Ctrl+R で新しい履歴検索を試す
最後に、あなたのシェルにatuinを統合するために、シェルを再起動します。atuin init コマンドが自動的にシェル設定ファイルに追記されていることを確認してください。
# シェルを完全に閉じて開き直すか、以下のコマンドで設定を再読み込み
source ~/.bashrc # Bashの場合
source ~/.zshrc # Zshの場合
source ~/.config/fish/config.fish # Fishの場合
シェルが再起動したら、早速 Ctrl+R を押してみてください。atuinのフルスクリーン履歴検索UIが立ち上がり、あなたの既存履歴が検索できるはずです。
この3つのステップを完了すれば、あなたはもう履歴の消失や断片化に悩むことはありません。atuinがあなたの開発を強力にサポートし、よりスムーズで生産的なCLI体験を提供してくれるでしょう。