ShellHistory - シェルの履歴をバックアップ、同期、整理することができるMac用アプリ

S 20210518 140610

LinuxやmacOSで使用する「シェル」にはコマンドの実行履歴を保存する機能が搭載されています。

シェル自体にも保存した履歴を検索し、再利用するための機能は搭載されていますが、GUIで履歴を管理したり、履歴を同期したりといった機能は利用することはできません。

本日紹介する「ShellHistory」はこれらの機能を補うことができるMac用アプリです。

ShellHistoryは以下のような問題を解決します。

  • シェルの履歴をSQLiteデータベースに保存しiCloudにバックアップすることで安全性を保つ。
  • SQLiteのFull-Text Searchエンジンを活用し検索を強化。
  • Exit Code、作業ディレクトリ、ホスト、ユーザー、コマンドの実行時間、セッションIDを含めて履歴に保存。
  • シェルの履歴からコマンドをノートにまとめることができる。
  • 実行したコマンドの経過時間が記録されるため、ビルド時間を比較できる。

2017年に作成されたDBHistツールの発展系だと説明されています。

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

ShellHistoryの使用方法

ShellHistoryは11.99ドル(記事執筆時セール期間中で5.99ドル)の有料アプリです。Mac App Storeから購入するか、公式サイトから機能制限なしで14日間使える試用版をダウンロードします。

ShellHistory Mac App Store
カテゴリ: 開発ツール
価格: ¥1,480 → ¥730 (記事公開時)
シェルの履歴をバックアップ、同期、整理することができるユーティリティ。

起動すると以下のような画面が表示されます。

S 20210518 140610

▲「zsh」「bash」「fish」といったシェルごとに最初に実行すべき設定が掲載されています。

例えばzshの場合、以下を~/.zshrcに追加します。

# adding shhist to PATH, so we can use it from Terminal
PATH="${PATH}:/Applications/ShellHistory.app/Contents/Helpers"

# creating an unique session id for each terminal session
__shhist_session="${RANDOM}"

# prompt function to record the history
__shhist_prompt() {
    local __exit_code="${?:-1}"
    history -D -t "%s" -1 | sudo --preserve-env --user ${SUDO_USER:-${LOGNAME}} shhist insert --session ${TERM_SESSION_ID:-${__shhis\
t_session}} --username ${LOGNAME} --hostname $(hostname) --exit-code ${__exit_code}
    return ${__exit_code}
}

# integrating prompt function in prompt
precmd_functions=(__shhist_prompt $precmd_functions)

▲コマンド実行ごとに、ShellHistoryに含まれる「shhist」コマンドが呼び出され、履歴が保存されていることがわかります。

既存の履歴をインポートするには以下のコマンドを実行します。

history -D -t "%s" -1000000 | "/Applications/ShellHistory.app/Contents/Helpers/shhist" import

設定が完了するとシェルで実行したコマンドの履歴がShellHistoryに表示されるようになります。

S 20210518 141755

▲左側の「History」をクリックすると実行したコマンドが一覧表示されます。コマンド文字列のほか、実行時間やユーザー名、ホスト名などの各種情情報が保存されていることがわかります。画面中央の検索ボックスを利用して履歴を絞り込むこともできます。

S 20210518 145008

▲コマンドやメモをまとめたノートを作成することもできます。コマンドは履歴から追加することができるほか「insert command」で新規作成することができます。「insert note」でメモの追加、「insert link」でリンクの追加が可能です。

S 20210518 145039

▲「Preferences」ではiCloudバックアップを有効にすることができます。

まとめ

ShellHistoryを利用するとシェルの履歴をさらに有効活用することができます。頻繁に使用するコマンドをメモと共に保存することができるノート機能も便利です。興味のある方は試用版で確認してみてはいかがでしょうか。