[macOS]シェルスクリプトをFinderから実行するときの注意点(作業フォルダ)

[macOS]シェルスクリプトをFinderから実行するときの注意点(作業フォルダ)
  • macOSのシェルスクリプトをFinderから実行するためには、拡張子を.commandに変更する必要があります。
  • ただし、実行時のカレントディレクトリはユーザディレクトリになってしまうため、cd $(dirname $0)でスクリプトのあるフォルダに移動する必要があります。
[macOS]シェルスクリプトをFinderから実行するときの注意点(作業フォルダ)

この方法を使うことで、Finderから直接シェルスクリプトを実行し、作業フォルダ内にファイルを作成することができます。

macOSでシェルスクリプトをFinderから実行する方法 1. 実行可能にする chmod +x スクリプト名 拡張子を .command に変更 これでFinderからダブルクリック で実行できるようになる example.command 2. 作業フォルダの問題 注意点: Finderから実行すると、 カレントディレクトリは ユーザディレクトリ(~)になる cd $(dirname $0) スクリプトがあるフォルダに 移動するコマンドが必要 3. 実装例 #!/bin/bash cd $(dirname $0) touch new.txt # 作業フォルダに新規ファイル作成 実行の流れ Finderでスクリプトをダブルクリック ターミナルが開き、自動的にスクリプトの あるフォルダで処理が実行される
sns_share_buttons
\記事が役に立ったらシェアしてね/
【スポンサーリンク】

1. シェルスクリプトを実行可能にする

macOSでシェルスクリプトを実行するには、chmod +x で実行可能にします。
しかし、これだけではターミナルからは実行できても Finder からは実行できません。
ダブルクリックすると、エディタで開いてしまうのです。

これは、拡張子を .command に変更することで、Finderからも実行できるようになります。

2. 実行時の作業フォルダに注意

ただし、「カレントディレクトリ」の扱いに注意する必要があります。
Finderで表示しているフォルダではなく、ユーザディレクトリ(~)で実行されてしまうからです。

そこで、実行時のフォルダを移動しておく必要があります。

cd $(dirname $0)
実行時の作業フォルダに注意

$0からコマンドファイル自体のパスを参照することで、そのフォルダに移動できます。

3. 作業フォルダに新しいファイルを作成できるコマンド

たとえば、

#!/bin/bash
cd $(dirname $0)
touch new.txt

これで、作業フォルダに新しいファイルを作成できるコマンドができました。

作業フォルダに新しいファイルを作成できるコマンド

Finderには「テキストファイルの新規作成」メニューがないので便利です。

こちらもどうぞ。
[mac] コマンドラインからゴミ箱に入れる【~/.Trash】
[mac] コマンドラインからゴミ箱に入れる【~/.Trash】
mv ~/.TrashMacの「ゴミ箱」フォルダに移動するrmコマンドだと完全に削除されるmacでゴミ箱に移動する処理を自動化したい、と思いました。シェルスクリプトで削除するなら、rm(remove)を使うのですが、▶ 何を削除したか後から確認できない、▶ これは失敗したら元に戻せない、という欠点があります。「ゴミ箱」フォルダは ~/.Trash macの「ゴミ箱」フォルダの場所は、「~/.Trash」です。(~はユーザーディレクトリの場所)先頭がドットなので、隠しフォルダに...

macOSで画像ファイルを整理(重複避ける移動スクリプト)
macOSで画像ファイルを整理(重複避ける移動スクリプト)
ファイルをまとめてmvで移動すると、ファイル名の重複があったときに、うまくいきません。オプションをつけないとmvはエラーでキャンセルされるので上書きはされません。ただ、移動されず残ってしまいます。macOSのシェルスクリプトで、以下の操作をしたいと思います。 フォルダ「Download」にある「.png」「.PNG」「.svg」「.SVG」のファイルすべてをフォルダ「Pictures」に移動したい。 ただし、同名ファイルがある場合には、ファイルの末尾に(1)などの数字を追加し...

[macOS] Launchpadのハテナマーク付きのアイコンを削除する(Logicool G Hub)
[macOS] Launchpadのハテナマーク付きのアイコンを削除する(Logicool G Hub)
macOSのLaunchpadで不要なアイコンが残っていました。まずは、アイコンの長押しで削除を試み、それでも解決しない場合は、Launchpadのデータベースをリセットします。defaults write com.apple.dock ResetLaunchPad -bool true; killall Dock環境macOS Sonoma 14.6.1Launchpadにアイコンが残っていたMacでLogicool G HUB アプリをインストールしていたのですが、不要に...
QRコードを読み込むと、関連記事を確認できます。

[macOS]シェルスクリプトをFinderから実行するときの注意点(作業フォルダ)
タイトルとURLをコピーしました