ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【MacOS/shell】MacOSでWindowsでいうバッチファイルを作成する

 Windowsでは「.bat」という拡張子のファイルを作成することで、ダブルクリックするだけでコマンドプロンプトの処理を実行することができるいわゆる「バッチファイル」を作成することができます。

 MacOSでもそういう機能があるのかと思って調べてみたら、shellファイルをダブルクリックするだけで起動させられることがわかったのでその備忘録です。

 では始めます。


1:.commandファイル
 MacOSではshellが使えます。そのshellで記述したファイルの拡張子を「.command」に変更すると、ダブルクリックするだけで実行することができます。

 例えば以下のようなコードを記述してみます。

・test.command

#!/bin/bash
DIR_NAME="test"

echo $DIR_NAME
mkdir $DIR_NAME # ルートディレクトリに作成

 上記ファイルを作成して「test.command」をダブルクリックすると自動でターミナルが立ち上がり実行され、testディレクトリが作成されます。

 ただしこの「.command」ファイルが実行されるのは「ルートディレクトリ」なのでファイルが存在するカレントディレクトリで実行させるには「cd `dirname $0`」の記述を追加します。

・test2.command

#!/bin/bash

cd `dirname $0` # カレントディレクトリに移動

DIR_NAME="test"

echo $DIR_NAME
mkdir $DIR_NAME # カレントディレクトリに作成


2:実行権限がない場合
 エディタなどで.commandファイルを作成した場合に権限がなくて実行できない場合があります。

 その場合は以下のコマンドで実行権限を付与する必要があります。

chmod u+x [ファイルパス]


3:.commandファイル実行後にターミナルを終了させたい場合
 .commandファイルを実行してもターミナルウィンドウは自動的に閉じてくれません。

 自動的にターミナルを終了して欲しい場合はターミナル側の設定を変更する必要があります。

 設定を変更するには「ターミナル」→「環境設定」を選択します。
f:id:rikoubou:20190927113553p:plain

「プロファイル」→「シェル」タブ→「シェル終了時」のプルダウンから「シェルが正常に終了した場合は閉じる」を選択します。
f:id:rikoubou:20190927113812p:plain

 これでターミナルウィンドウを自動的に閉じてくれるようになります。


 以上がMacOSでバッチファイルを作成する方法です。

 個人的にあまりバッチファイルを作ることはないのですが、覚えておくとちょっとしたツールを作る時に便利だと思います。


・参考資料