確認環境
PC | Thinkpad X1 Carbon 2nd Gen |
OS | FreeBSD 12.0-RELEASE-p5 |
w3m | version w3m/0.5.3+git20190105 |
課題
仮想コンソールから、サクッとGoogle検索したい。
対策
仮想コンソール上でWebページを見るには、w3m
を使えばいい。
しかし、
-
w3m
でGoogleページを指定して起動する - 検索ワードを入力
- 検索する
なんてイチイチやってられない。
引数に検索キーワードを渡して、Googleの検索結果をすぐにw3m
で確認したい。
今回は、そんなシェルスクリプトを簡単に作ってみよう。
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. コード
今回作成したコードは下記となる。
上記をファイルへ保存したら、実行権限の追加と、パスが通ったディレクトリに置くことをお忘れなく。
ざっくりコードを説明すると、
- 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エンコードの方法を知りたいなら、下記ページあたりを参考にされると良いと思う。
以上。