はじめに
Chromeで過去に訪問したことがあるページを開きたい時、アドレスバーにURLの一部を入力して表示される候補から開くことありませんか?
私はgithubで特定のリポジトリのページを開きたい時や開発中の画面を開く時によく上記操作をします。
Chromeのアドレスバーも保管してくれますが、候補が少ししか出てこなかったり、キーワード検索と混じったりで使い勝手が悪いと感じていました。
このストレスから解放される方法をずっと考えていたのですが、ターミナルを使って履歴を検索してChromeで開くコマンドができたので紹介します。
コマンドのイメージ
文章だけではわかりづらいですが、↓のようなイメージです。
- ターミナルで
ch
と入力 - urlの一部を入力。スペース区切りで複数キーワード入れることもできます。検索の仕様はpecoのホームページを参照(https://github.com/peco/peco)
- 該当するURLにカーソルを合わせて
return
。カーソル移動はcontrol+n
(下),control+p
(上)、または矢印キーです。 - Chromeで該当画面が開く
コマンドの作り方
環境準備
下記の環境で作成・動作しました。
OS
macOS Mojave(10.14.5)
sqlite3
3.24.0
Chromeの履歴がsqlite形式で保存されているので履歴の読み取りで使います。
macOSであれば最初からインストールされています。
peco
履歴をインクリメンタルサーチするときに使います。
他にも色々活用できる素晴らしいコメンドなのでぜひ入れておきましょう。
下記ページを参考にインストールしておきましょう。
https://github.com/peco/peco
Chrome
75.0.3770.142
コマンド
コマンドは下記の通り。コマンド名はch
で.bashrc
に記述しました。
function ch {
# Chromeの履歴ファイル(sqlite形式)をそのまま使ったらlockされていてエラーになったので/tmpにコピー
# たぶんChromeがLockしているんだろう
cp -p $HOME/Library/Application\ Support/Google/Chrome/Default/History /tmp/chrome_history
# sqliteを使ってURL履歴を取得してpecoに流す
# pecoでインクリメンタルサーチした結果をcに格納
local c="$(sqlite3 /tmp/chrome_history 'select url from urls' | peco)"
if [ -n "$c" ]; then
# 対象urlが選択されている場合、Chromeで開く
open -a '/Applications/Google Chrome.app' "$c"
fi
}
最後に
URL履歴の候補にfile://...
やchrome-extension:
など余計なものが出てきて邪魔なのでsqlを改修するなど改善の余地はありそう。
あと無邪気に全履歴をselectしているけどChromeの履歴ってどれくらいたまるんだろうか。数が多いとノイズも多くなるので何らかの条件で絞れると良さそう。
まあこのへんは使っていく中で改善していきたいと思います。