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日間使える試用版をダウンロードします。
起動すると以下のような画面が表示されます。
▲「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に表示されるようになります。
▲左側の「History」をクリックすると実行したコマンドが一覧表示されます。コマンド文字列のほか、実行時間やユーザー名、ホスト名などの各種情情報が保存されていることがわかります。画面中央の検索ボックスを利用して履歴を絞り込むこともできます。
▲コマンドやメモをまとめたノートを作成することもできます。コマンドは履歴から追加することができるほか「insert command」で新規作成することができます。「insert note」でメモの追加、「insert link」でリンクの追加が可能です。
▲「Preferences」ではiCloudバックアップを有効にすることができます。
まとめ
ShellHistoryを利用するとシェルの履歴をさらに有効活用することができます。頻繁に使用するコマンドをメモと共に保存することができるノート機能も便利です。興味のある方は試用版で確認してみてはいかがでしょうか。