アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

【PHP】コマンドラインからGoogle検索するワンライナー【bash】

皆さんはコマンドラインで作業してるときに、Googleで検索したくなることってありますか?

【レビュー】コマンドラインからGoogle検索するツール「searchGoogle」』の記事を読んで便利そうだったので、シェルスクリプトPHPを使ったワンライナーで似たようなツールを実装してみました。

なんとなく車輪の再発明っぽいですが、記事のほうはWindowsコマンドプロンプト用で、私が普段開発環境として利用しているのはGNU/Linuxですので、まぁいーかなーと(^^;
なお、今回使用するシェルはbashです。

まずはエイリアスで「google」というコマンドを作成します。



$ alias google='opera -newpage http://www.google.com/search?q=$1'


私のメインブラウザがOperaなので、もしFirefoxを使用している方は「opera -newpage」の部分を「firefox -new-tab」に変更してください。

では、実行してみます。



$ google hoge


あれ?うまく動きませんね……。
調べてみると、bashエイリアスは引数を使用できないようですので、今度はfunctionで作成します。



$ unalias google
$ function google { opera -newpage http://www.google.com/search?q=$1; }


改めて実行してみます。



$ google asial

(「asial」の検索結果)

無事うまくいきました!

ただ、このままだと引数はひとつしか指定できず、日本語での検索もできませんので、PHPを使って引数をURLエンコードすることにします。



$ php -r 'if (array_shift($_SERVER["argv"])) echo urlencode(implode(" ", $_SERVER["argv"]));' ほげ ふが
%E3%81%BB%E3%81%92+%E3%81%B5%E3%81%8C


あとはこれと先ほどのスクリプトを組み合わせれば完成です。



function google { opera -newpage http://www.google.com/search?q=`php -r 'if (array_shift($_SERVER["argv"])) echo urlencode(implode(" ", $_SERVER["argv"]));' $*`; }


では、うまくいくか確認してみます。



$ google asial ブログ

(「asial ブログ」の検索結果)

成功です!

これで、ちょっとした調べものがしたいとき便利に検索できますね。また、Googleの電卓機能を使って簡易電卓としても使えます。



$ google 1+2*3

(「1+2*3」の検索結果)

今回はシェルスクリプトと併用していますが、PHPのみでコマンドラインスクリプトを作成してもいいですね。以前のブログでご紹介したPEAR::Console_CommandLineなどを使って、オプション指定でブラウザを切り替えたりする機能など盛り込むと使いやすくなりそうです。