Help us understand the problem. What is going on with this article?

ターミナルでchromeの履歴をインクリメンタルサーチして開く

More than 1 year has passed since last update.

はじめに

Chromeで過去に訪問したことがあるページを開きたい時、アドレスバーにURLの一部を入力して表示される候補から開くことありませんか?
私はgithubで特定のリポジトリのページを開きたい時や開発中の画面を開く時によく上記操作をします。

Chromeのアドレスバーも保管してくれますが、候補が少ししか出てこなかったり、キーワード検索と混じったりで使い勝手が悪いと感じていました。

このストレスから解放される方法をずっと考えていたのですが、ターミナルを使って履歴を検索してChromeで開くコマンドができたので紹介します。

コマンドのイメージ

文章だけではわかりづらいですが、↓のようなイメージです。
1. ターミナルでchと入力
2. urlの一部を入力。スペース区切りで複数キーワード入れることもできます。検索の仕様はpecoのホームページを参照(https://github.com/peco/peco)
3. 該当するURLにカーソルを合わせてreturn。カーソル移動はcontrol+n(下), control+p(上)、または矢印キーです。
4. Chromeで該当画面が開く
peco_chrome_history.gif

コマンドの作り方

環境準備

下記の環境で作成・動作しました。

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に記述しました。

.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の履歴ってどれくらいたまるんだろうか。数が多いとノイズも多くなるので何らかの条件で絞れると良さそう。
まあこのへんは使っていく中で改善していきたいと思います。

ham0215
Webエンジニアやってます。仕事では主にバックエンド開発をRailsで行っています。仕事で使う機会は少ないですが、フロント開発ではReact、Typescriptを使っています。
https://hamchance.com
vis-its
独自技術ideagramを用いて、人々の「創造性」や「目利き力」の定量化を行い、イノベーター人材の発掘/育成、科学的イノベーション創発支援を行っています。
https://visits.world
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away