Ipad

Mac OS X のコマンドラインからアプリケーションを正常に終了する

Mac OS X のコマンドラインからアプリケーションを正常に終了する

OS Xのターミナルアプリケーションを正常に終了するには、通常、適切なアプリケーションメニューから「終了」を選択します。しかし、MacのGUIはMac OS Xのコマンドラインからはアクセスできません。そのため、コマンドラインユーザーの多くは、アプリケーションを終了する必要に迫られた場合、「ソフト」キルではなく、「kill」コマンドを使用してプロセスを終了し、アプリケーションを強制的に終了することになります。アプリケーションを終了する際の明らかな問題は、アプリケーションは終了するものの、そのプロセスでデータが失われる可能性があり、セッション復元キャッシュでさえデータを復元するのに十分ではない可能性があることです。したがって、可能な限り、ユーザーはアプリケーションを正常に終了するのが最善です。


あまり知られていませんが、osascriptコマンドを使えば、コマンドラインからMac OS XのGUIアプリケーションに標準的な終了信号を送信できます。使い方は非常に簡単なので、ここではその点について説明します。

osascriptを使ってMac OS Xのターミナルからアプリを正常に終了する方法

繰り返しになりますが、これはアプリケーションに対して、kill(終了)シグナルではなく、標準的な終了シグナルを発行します。つまり、未保存のデータがある場合でも、対象アプリケーションはユーザーに入力を求めることなく強制終了することはありません(ただし、Mac OS Xで自動保存設定が有効になっていて、その結果アプリケーションがユーザーに入力を求めない場合は除きます)。

Mac OS X の GUI アプリケーションにターミナルから標準の終了信号を送信するための基本的な構文は次のとおりです。

osascript -e 'quit app "APPLICATIONNAME"'

たとえば、コマンドラインからカレンダーを終了するには、APPLICATIONNAMEを「Calendar」に置き換えます。

osascript -e 'quit app "Calendar"'

カレンダーは同期機能があり、保存オプションがないため、アプリを終了しようとしても標準の保存ダイアログは表示されません。保存オプションのあるアプリで、Mac OS X で自動保存が無効になっている場合は、通常通り保存ダイアログボックスが表示されます。

osascriptを使ってアプリを正常に終了させるもう一つの利点は、実際のアプリケーション名を指定できることです。これは、killコマンドに付随するプロセスID番号だけに頼るよりも、はるかに覚えやすく、ユーザーフレンドリーです。なお、Mac OS Xの最新バージョンでは、pkillと呼ばれる、よりユーザーフレンドリーな改良版のkillコマンドが提供されています。

これを bash スクリプトで使用して、コマンドラインからアプリケーションを終了したり、少し前に説明した Automator のトリックを使用して「開いているすべてのアプリケーションを終了」するのと同様に動作するように変更したりすることもできます。