続々 ターミナルからアプリケーションを起動する
しつこいですが、ターミナルからアプリケーションを起動しやすくする話です。
またも方針を変更して、 /Applications 以下の .app 全てを対象とするようにします。おじさんからはずっと bash で話を済ませるように言われているのですが、こうなると結構時間がかかっちゃうので .bash_profile に入れるのはナンだし、文字列の操作を入れるとやっぱ Python の方がラクチンなので、 Python で .apprc を書き出すという方針は変えないことに。
ymasuda さんからいただいたアドバイスにより、 open コマンドを -a オプションをつけることでもうちょっとましに使えそうなので採用。
また、 alias にはスペースが入っていると何かとややこしいことがあるので、 alias からはスペースを削り、 alias される方はスペースをエスケープするようにしました。
ということで、 apprc.py は以下のようになりました。そこそこ時間がかかるので、アプリケーションを追加したときに実行して、 .bash_profile は .apprc を source するようにします。同じ名前の app がある場合は後で出るので上書きされちゃうので注意です。つまり、例えば
またも方針を変更して、 /Applications 以下の .app 全てを対象とするようにします。おじさんからはずっと bash で話を済ませるように言われているのですが、こうなると結構時間がかかっちゃうので .bash_profile に入れるのはナンだし、文字列の操作を入れるとやっぱ Python の方がラクチンなので、 Python で .apprc を書き出すという方針は変えないことに。
ymasuda さんからいただいたアドバイスにより、 open コマンドを -a オプションをつけることでもうちょっとましに使えそうなので採用。
また、 alias にはスペースが入っていると何かとややこしいことがあるので、 alias からはスペースを削り、 alias される方はスペースをエスケープするようにしました。
ということで、 apprc.py は以下のようになりました。そこそこ時間がかかるので、アプリケーションを追加したときに実行して、 .bash_profile は .apprc を source するようにします。同じ名前の app がある場合は後で出るので上書きされちゃうので注意です。つまり、例えば
/Applications/OmniGraffle.app/Contents/Resources/OmniGroupCrashCatcher.appと
/Applications/OmniOutliner.app/Contents/Resources/OmniGroupCrashCatcher.appは両方とも
OmniGrroupCrashCatcher.appとなるわけです。
#!/usr/bin/env python
import os
apprc = '%s/.apprc' % os.path.expanduser('~')
apps = {}
for root, dirs, files in os.walk('/Applications'):
if root.endswith('.app'):
app = os.path.basename(root)
key = app.replace(' ', '')
val = app.replace(' ', '\\ ')
apps[key] = val
continue
f = file(apprc, 'w')
for key in apps.keys():
f.write("alias '%s'='open -a %s'\n" % (key, apps[key]))
f.close()
Posted at 11:43
by setomits