指定の URL・ファイルを複数のブラウザで一気に開く Bash スクリプト (Mac・Windows 両対応)
ウェブサイトのデザイン確認のため、色々なブラウザで同じページを開きたいことがある。
それを自動化するため、こんな Bash スクリプトを書いてみた。Mac と Windows (GitBash) で使える。
#!/bin/bash
target="$1"
if [ "$target" == "" ]; then
echo 'URL またはファイル名を指定してください'
exit 1
fi
if [ "$(uname)" == 'Darwin' ]; then
# Mac の場合
# いずれのブラウザも、URL も相対ファイルパスも指定できる
open -a 'Google Chrome' "$target"
open -a 'Firefox' "$target"
open -a 'Safari' "$target"
else
# Windows の場合
# Chrome・Firefox は URL も相対ファイルパスも問題なし
cmd //c start chrome.exe "$target"
cmd //c start firefox.exe "$target"
if [ -f "$target" ]; then
# ファイルパスが指定されている場合 (ファイルが存在する場合)
# IE はフルパスを作って開く
target_file_full_path="$(cd $(dirname "$target"); pwd)/$(basename "$target")"
cmd //c start iexplore.exe "$target_file_full_path"
# Edge はローカルファイルを開けないので処理しない
echo 'Edge はローカルファイルを開けないため処理しませんでした'
# Edge ブラウザだけ開いてあげるなら以下
# cmd //c start microsoft-edge:
else
# ファイルでない場合 (URL と見なす)
# IE と Edge を開く
cmd //c start iexplore.exe "$target"
cmd //c start microsoft-edge:"$target"
fi
fi
コレを openurl
みたいな名前で PATH が通っているところに保存し、$ chmod +x openurl
と実行権を付与したら、
$ openurl http://example.com/
$ openurl ./local-file.html
みたいに使用する。
Mac の場合は Chrome・Firefox・Safari で、Windows の場合は Chrome・Firefox・IE・Edge で、指定の URL やファイルが開ける。
Mac と Windows それぞれで、「URL が指定された場合」と「ローカルのファイルが指定された場合」とを考慮した。
Mac の場合は特に問題なく、open -a
でアプリケーションを指定し、URL なりファイルパスなりを渡せば良い。Windows における Chrome と Firefox も start
コマンドを使えば問題ないので、cmd /c
オプションでコマンドプロンプトを経由して実行するだけ。
手間がかかったのは Windows の IE と Edge。IE でローカルファイルを開くにはフルパスで指定する必要があるので、dirname
と basename
を組合せてフルパスを生成するようにした。
Edge については、ローカルの HTML ファイルを開く術がないようだ。そもそも Edge は UWP (Universal Windows Platform) アプリなので、edge.exe
みたいな書き方ではなく、microsoft-edge:
で起動する。
Microsoft 公式っぽい、「Microsoft Edge Launcher」なるツールもあったのだが、コレを使ってもローカルファイルは開けず。
- 参考 : GitHub - MicrosoftEdge/edge-launcher: A simple command line exe to launch Microsoft Edge at a URL.
あと、Edge へのショートカットファイルを作り、そこに投げ込んだらどうか、という記事もあったが、ココまでいくと面倒臭いので諦めることにした。
Edge 対応はダルいのでココまで。