シェルのhistoryをクラウドに保存する取り組み2018-11-16シェルのhistoryをクラウドに保存する取り組みある日zshの履歴が消えた悲しみからいくつか課題感を持っていた。巨大な1ファイルにどんどん書いていくので、壊れたときの影響が大きい追記方式なので、複数の端末で共有するためGitやDropboxなどに入れるとコンフリクトしやすい履歴から取り出すときにどのディレクトリで実行したコマンドなのかわからないシェル履歴をファイルに書いて終わりという暮らしは数十年変わっていない。履歴はクラウドサーバーに保存して、補完したいときにAPI経由で問い合わせるというアーキテクチャが良いと思ったので、作ってみた。DynamoDBみたいなやつ。普通に暮らしてると、こんなかんじにDatastoreで履歴を見れる。見えるとまずい情報があったらポチポチやって消せる。履歴の補完$pwdを指定してAPIをGETするそのディレクトリでのコマンドに絞り込んでJSONを返すpecoで選択して実行するこんな感じのJSONが出てくる。pwdを保存してるのが新規性がある。},]やってみたところ、候補をディレクトリで絞り込めるのがたいへん便利。js、とかこれまでは覚えておくしかなかったのが、履歴から選べば正解が出る。触るディレクトリなどのとき用に、ディレクトリを指定せず全履歴から選ぶモードも作った。これからデータが増えると事情が変わってきそうだけど、実行時間も気にならず動いているので、もともとあったCtrl-rでファイルからヒストリを絞り込むのを消して、クラウドから引っ張ってくる版だけで暮らしている。困り作り始めたところなのでいろいろ困り事はある。オフラインで動かないバッファリングしてないのでオフラインでの作業はロストしてしまう。>&というのが1コマンド打つたびに出てくる認証をちゃんとやってないAPIキーでの認証を手作りしたけどGoogleのアカウントと連携してOAuthで使い始められるとよさそう。いまは1人1個GCPのプロジェクトを作るということにしている。手元のファイルを大切にする時代は終わったと信じて、未来に進んでいきたい。(1)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。