• Top
  • Search
  • About
  • Privacy Policy
google

どこに需要があるかわかりませんが、、
Mac のターミナルから Google 検索ができるようにするための方法です。

#

ターミナルからブラウザを起動する方法

まずは、Mac のターミナルから各ブラウザを起動する方法を確認します。
ターミナルからアプリを起動するには「open」コマンドに「-a」オプションでアプリ名を指定します。

$ open -a "Google Chrome"
$ open -a "Firefox"
$ open -a "Safari"

アプリを直接指定して起動することもできます。

$ open "/Applications/Google Chrome.app"
$ open "/Applications/Firefox.app"
$ open "/Applications/Safari.app"

指定した URL を開く方法

ブラウザを起動する方法が確認できたら、次は指定した URL を開く方法を確認します。
指定したURLを開く方法は簡単で、ブラウザを起動するコマンドに URL を追加するだけです。
※ URL はアプリ名の前でも後ろでも大丈夫です。

$ open https://google.co.jp -a "Google Chrome"
$ open -a "Google Chrome" https://google.co.jp

URL で Google 検索をする方法

ターミナルからブラウザを起動して、Google の検索ページを開くところまでできました。
しかし、このままでは検索ワードはブラウザに入力することになってしまいます。
そこで、URL から検索ワードをいきなり検索できるようにします。
Google の URL に検索ワードを追加するには「/search?q=<検索ワード>」のようにします。
また、複数のキーワードを検索したいときはワード間を「+(プラス)」で連結します。

$ open -a "Google Chrome" "https://google.co.jp/search?q=東京+天気"

serch_result

シェルスクリプトを作成する

ブラウザを開いて、URL で検索できるようになったら、あとは、その一連の動作をシェルスクリプトの関数としてまとめるだけです。

google() {
    if [ $(echo $1 | grep "^-[cfs]$") ]; then
        local opt=$1
        shift
    fi
    local url="https://google.co.jp/search?q=${*// /+}"
    local c="Google Chrome"
    local f="Firefox"
    local s="Safari"
    case $opt in
        -c ) open $url -a $c;;
        -f ) open $url -a $f;;
        -s ) open $url -a $s;;
        * ) open $url;;
    esac
}

あとは、この関数を「.bashrc」や「.zshrc」に追加します。
※ 追加した後は「source」コマンドで読み込むのを忘れないように。

$ vim ~/.zshrc
$ source ~/.zshrc

関数の使い方

使い方は簡単で、「google」の後に起動したいブラウザをオプションとして渡して、検索ワードをその後ろにスペース区切りで追加するだけです。
※ オプションを省略すると、デフォルトのブラウザが起動します。

$ google -s 東京 天気

(おまけ)関数の解説

まず、以下の部分でオプションがあるかどうかを判定します。
指定のオプションがあれば「opt」の変数に代入して、引数をシフトします。

if [ $(echo $1 | grep "^-[cfs]$") ]; then
    local opt=$1
    shift
fi

残りの引数を google のクエリパラメータに渡します。
${*// /+}」の部分で、残りの引数の半角スペースを「+(プラス)」に変数内文字列置換しています。
(参考)bashの変数内文字列置換まとめ - Qiita

local url="https://google.co.jp/search?q=${*// /+}"

あとは、上の URL を case 文で条件分岐させて「open」コマンドを実行しているだけです。

local c="Google Chrome"
local f="Firefox"
local s="Safari"
case $opt in
    -c ) open $url -a $c;;
    -f ) open $url -a $f;;
    -s ) open $url -a $s;;
    * ) open $url;;
esac

おわりに

ターミナルから Google 検索をする方法いかがでしたでしょうか。
ターミナルを触っている最中に、ブラウザを探す手間が省けると思いますので、ぜひ実践してみてください!

それでは、よいターミナルライフを : )