ちょっとした作業用にShell Scriptを書いていて、毎回ターミナルから実行していた。
DatabaseをRDSからdumpしてローカルに持ってくる作業で、
毎回タイムスタンプをつけてローカルに格納するのにはスクリプトがちょうどいい。
ただ、クリックしてパッと実行できたらなと思っていた。
.sh ファイルを、.command 拡張子に変えるだけで行けそうだったのでためした。
できること
- シェルスクリプトをダブルクリックするだけで即時実行する
- Pythonで書かれたスクリプトも即時実行できる
やること
- ファイル拡張子を.commandに書き換える
- 実行権限を与える
$ mv script.sh script.command
$ chmod u+x script.command
これだけでよい。
あとはクリックして実行するだけ。
ターミナルが立ち上がってくれる。
そして、pythonで書いたコードを実行したいならば、スクリプト内の1行目を書き換えれば良い。
$ which python
/Users/yuki/.pyenv/shims/python
#!/Users/yuki/.pyenv/shims/python
print(f'Hello')
注意点がある。
カレントディレクトリの扱いに注意する
単にクリックして実行した場合、ユーザのディレクトリ(~)で実行される。
ので、スクリプトの中で適宜注意すること。
僕の場合、dumpしたファイルが ~ にいてびっくりした。
どちらもクリック時の引数から、.commandファイルの場所がわかる。
Shell Scriptであれば
#!/bin/bash
CWD=$(dirname $0)
echo "I'm in $CWD"
Pythonならば
#!/Users/yuki/.pyenv/shims/python
import os, sys
argcwd = os.path.dirname(sys.argv[0])
print(f"I'm in {argcwd}")
Pythonの場合、os.getcwd() があるが、これを試したら ~ になってしまった。
- Log in to post comments