【FreeBSD】仮想コンソールからサクッとググる

確認環境

PC Thinkpad X1 Carbon 2nd Gen
OS FreeBSD 12.0-RELEASE-p5
w3m version w3m/0.5.3+git20190105

課題

仮想コンソールから、サクッとGoogle検索したい。

対策

仮想コンソール上でWebページを見るには、w3mを使えばいい。
しかし、

  1. w3mGoogleページを指定して起動する
  2. 検索ワードを入力
  3. 検索する

なんてイチイチやってられない。

引数に検索キーワードを渡して、Googleの検索結果をすぐにw3mで確認したい。
今回は、そんなシェルスクリプトを簡単に作ってみよう。

  1. シェルスクリプトの使用例
  2. w3mのインストール
  3. コード
  4. 補足 URLエンコードについて

1. シェルスクリプトの使用例

今回作るスクリプトの簡単な使用例。
ここでは、シェルスクリプトのファイル名をgglにしている。

通常の検索

単純に引数に検索したいワードを並べればいい。

> ggl FreeBSD Love  # 'FreeBSD' の検索結果ページを開く  

用語定義の検索

Googleで用語定義を調べたいとき用。
検索用オプションdefine:を追加して検索する。
詳細はこちらのページなどを見てね。

> ggl d: FreeBSD    # 'define: FreeBSD' の検索結果ページを開く  

Wikipedia

Wikipediaで用語について調べたいとき用。
とりあえず引数のワードを、WikipediaのURL末尾に引数をくっつけるスタイル。

> ggl w: FreeBSD    # https://ja.wikipedia.org/wiki/FreeBSD を開く  

2. w3mのインストール

もし、w3mをインストールされていない方は、下記コマンドでインストールしておこう。
(root権限で実行してね)

> pkg install ja-w3m  

3. コード

今回作成したコードは下記となる。

ggl

上記をファイルへ保存したら、実行権限の追加と、パスが通ったディレクトリに置くことをお忘れなく。

ざっくりコードを説明すると、

  • 3〜4行目: 検索ベースURL. 日本語が嫌な人はお望みの言語のドメインに変えてね
  • 7〜9行目: ブラウザとそのオプションの指定。AT_LINEはブラウザ起動時のカーソル初期位置(行番号)
  • 11〜13行目: 引数なしの場合は、Googleのトップを表示するパラメータ設定
  • 17〜18行目: 'd:'や'w:'を検索したいとき用(ggl -- d:と検索する想定)
  • 19〜21行目: 'define:'検索用のパラメータ設定
  • 22〜25行目: Wikipedia検索用のパラメータ設定
  • 29〜36行目: 引数を手抜きURLエンコードしつつ、URL末尾のクエリを作成
  • 38行目: w3mで指定のページを開く

といった感じ。

さぁ、自分好みにコマンドに改造しよう。

4. 補足 URLエンコードについて

上記コード30行目からの、下記の部分について少し補足しておく。

QUERY=$QUERY`echo $@ | \  
    sed -e 's/%/%25/g' \  
        -e 's/#/%23/g' \  
        -e 's/+/%2B/g' \  
        -e 's/&/%26/g' \  
        -e 's/ /+/g'`  

URLに使用できる文字というのは決まっている。
使用できない文字を含む場合、使用できる文字だけで表現した形式に変換する必要がある。
この変換のことを「URLエンコード」と呼んでいる。

今回は、僕の環境で試してみた結果、問題がありそうだった5文字('%#+& ')だけを変換している。
もしかすると、他にも不都合な文字があるかもしれない。

ちゃんとしたURLエンコードの方法を知りたいなら、下記ページあたりを参考にされると良いと思う。

以上。