bash/zshで実行したコマンドをクラウド上にあげてhistoryを共有する『Bashhub』

bashで実行したコマンドの履歴は\~/.bash_historyというファイルに記録され、上下キーやCtrl + Rで検索して実行することができる。 で、(当たり前の話だが)ローカルにしか記録されず、他のノードでは利用することができない。

今回紹介するBashhubは、クライアントを入れて実行したコマンドをBashhub上にも送信し、同じクライアントを入れているノードでも検索・実行できるようにするというOSSのサービス(当たり前だけど、MySQLとかのログイン時にパスワードとかオプションで指定するとその辺も一緒に送信されてしまうので注意)。 zshでも利用可能なようだ。

1. 『Bashhub』のクライアントをインストールする

こちらを参考に、『Bashhub』のクライアントをインストールする。 以下のコマンドを実行する。

bash -c 'curl -OL https://bashhub.com/setup && bash ./setup'
...
bashhub-client-1.1.4/uninstall-bashhub.sh
Pulling down a few dependencies...(this may take a moment)
          ____            _     _           _
         |  _ \          | |   | |         | |
         | |_) | __ _ ___| |__ | |__  _   _| |__   ___ ___  _ __ ___
         |  _ < / _` / __| '_ \| '_ \| | | | '_ \ / __/ _ \| '_ ` _  \
         | |_) | (_| \__ \ | | | | | | |_| | |_) | (_| (_) | | | | | |
         |____/ \__,_|___/_| |_|_| |_|\__,_|_.__(_)___\___/|_| |_| |_|

Welcome to bashhub setup!
Are you a new user? [Y/n]
What's your email? test@example.com
What username would you like? blacknon
What password?

Email: blacknon@orebibou.com Username: blacknon
Are these correct? [Y/n]
Registered new user blacknon

What do you want to call this system? For example Home, File Server, ect. [test-centos]:
Registered a new system test-centos
Should be good to go! Please close and restart your terminal session.

設定時にユーザ名やパスワードを要求される。これを利用して他のノードからログインすることで、複数のノードでhistoryを共有できるようになる。

2. 使ってみる

さて、それでは実際に使ってみよう。インストール直後だとBashhubの設定が読み込まれていないので、一度ログアウトしておく。 BashHubのhistoryを確認する場合、インストールされたbhコマンドを利用する。

bh # 全historyを出力
bh Keyword # キーワードで抽出

さらに、-i オプションを付与して実行することで、TUIでhistoryを選択してそのまま実行することもできるようだ。

自宅の検証用サーバとかに入れると便利かも。 tcpdumpの出力を見る限り送信時に暗号化してくれているようだけど、オプションにパスワードとかを付与するのはやめておこう(当たり前だけど)。