毎回、同じ事を繰り返す場合、その度にコマンドを打ち込むのは面倒ですね。そういう場合、コマンドをまとめてファイルに書いて実行させてしまう方が楽です。そのような一連のコマンドを書いたファイルをシェルスクリプトと言います。
今回は、OmniWeb.appで筆者が毎日チェックしているページをまとめて表示させるスクリプトを例として紹介します。
まず、何でも良いので、テキストエディタを起動します(筆者はemacsを使用しました)。そして、実行したいコマンドを書いてゆきます。
実際に作成したスクリプトは下記の通りです。
#!/bin/tcsh open -a /Applications/OmniWeb.app http://mac.page.ne.jp/& open -a /Applications/OmniWeb.app http://mediazone.tcp-net.ad.jp/danbo/index.html& open -a /Applications/OmniWeb.app http://www.versiontracker.com/macosx/index.shtml& open -a /Applications/OmniWeb.app http://www.unitedmedia.com/comics/dilbert/& exit
一番最初の行の「#!/bin/tcsh」という記述は、このスクリプトを実行させるシェルの種類を指定するものです。今回は、Terminal.appが標準として採用しているtcshをそのまま用いますので、「#!/bin/tcsh」としていますが、bashやzshもインストールされていますので、そちらを指定してもかまいません。
その次の行以降に、コマンドを書いてゆくのですが、コマンドの最後に「&」を付けておいた方がよさそうです。筆者が試した所、「&」を書き忘れると、最後のコマンドが実行されなくなるようです。
コマンドを最後まで書いたら、最後の行に「exit」とします。この「exit」を書き忘れた場合も、最後のコマンドが実行されませんでした。
スクリプトを書き終えたら、適当なファイル名で保存します。その後、「chmod +x 作成したファイル名」で、ファイルのアクセス権を書き換え、実行可能ファイルにします。
また、Terminal以外のエディタで作成した場合、今回のファイルをダブルクリックすると、作成するのに使ったエディタが起動してしまいますので、Finder上でそのファイルを選択し、Optionを押しながら、ファイルメニューを選択します。すると、普通は「このアプリケーションで開く」となっている部分が、「常にこのアプリケーションで開く」に変わりますので、そこからTerminal.appを選んで下さい。すると、ダブルクリックするとTerminal.appが起動して、ファイルに書かれたコマンドが実行されます。
ちなみに、今回のスクリプトを実行すると、Terminalにはこんな風に表示され、OmniWeb.appが各ページを表示してくれます。
Last login: Sun Nov 10 18:24:01 on ttyp1 /Volumes/Users/hiro/Desktop/test; exit Welcome to Darwin! [Macintosh:~] hiro% /Volumes/Users/hiro/Desktop/test; exit [1] 887 [2] 888 [3] 889 [4] 890 logout [Process completed]
なお、このスクリプトは、OmniWebとChimeraではちゃんと機能しますが、Mozilla(CFMとMachOの両方)、Operaでは機能しませんでした。IEについては、私のMacには入っていませんので、分かりません。
このように、よく使うWebページを表示させる他、複数のアプリを同時に起動させるスクリプトを書いて、ダブルクリック一発で、よく使うアプリをセットで起動する、なんて使い方もできます。ついでに、何かきれいなアイコンを貼付けておいて、Dockに登録するのも良いでしょう。
なお、ただコマンドを実行させるだけでなく、Cの文法を知っていれば、if分を使って条件分岐させ、特定のファイルが存在する場合は、ある処理を実行させる、といった使い方も可能です。