プログラミング
Stinkpot: SQLiteバックエンドのシェル履歴
Stinkpot: SQLite-backed shell history (tangled.org)
要約
Stinkpotは、Bashシェル向けのSQLiteデータベースをバックエンドとした履歴検索ツールです。atuiinのような高機能なツールは不要で、セッションに依存しない履歴管理とTUI検索機能のみを必要とするユーザー向けに、約400行のGo言語で記述されています。既存のBash履歴をインポートし、Ctrl+Rで履歴検索を起動できます。
全文翻訳
stinkpot
--------
_ _
/ \ _
(_\/\_/\_)
/\/ \/\
\/ _\/ \/
" "
stinkpotは、bashのためのsqliteバックエンドのシェル履歴検索ツールです。
stinkpotは、atuin (https://atuin.sh) よりもはるかに小さいものです。私はしばらくatuinを使用してきましたが、その機能のほとんどを使用していません。同期サーバー、atuin AI、ドットファイルマネージャー、スクリプトマネージャー、KVストアなどです。同期は興味深いですが、私のマシンはセットアップが大きく異なり、それらのマシンで非常に異なるコマンドを実行する傾向があります。atuinの私の唯一のユースケースは、セッションに依存しない履歴管理と、検索TUIでした。
stinkpotは、これらを提供しつつ、約400行のgoで記述されています。
stinkpotは、 apparently、小さなカメの種であり、それが名前の由来です。
開発
ビルドするには:
go build -o stinkpot .
使用法
nixosのhome-managerを使用している場合、stinkpotにはhome-managerモジュールがあります:
home-manager.users.<name> = {
imports = [ ./home.nix inputs.stinkpot.homeManagerModules.default ];
};
そうでない場合は、.bashrcでinitスクリプトを評価するだけです:
eval "$(stinkpot init)"
まず、既存のbash履歴をstinkpotにインポートすることから始めます:
stinkpot import
そして、シェルでCtrl+Rを押して逆検索をトリガーします:
> search history...
1s vim flake.nix
3m redis-server
3m jj l
35m jj show m
36m jj git fetch
39m cd
40m vim readme.txt
788 matches · ↑/↓ move · enter accept · esc cancel
タブまたはEnterキーを押して選択を確定し、もう一度Enterキーを押して実行します。
履歴データベースは~/.local/share/stinkpotに保存されます。アップグレードでDBが破損した場合、それを削除してインポートコマンドを実行するだけです。