ターミナルからMacアプリをシームレスに起動
ターミナルからMacアプリをシームレスに起動するためのZShell設定(.zprofile)について、以前も書きました。
http://qiita.com/GeneralD/items/58588e22fe7bb3e10205
しかし実は挙動としてイマイチ思わしくない点があったため、自分で弄ってみました。
実は前の記事を書いた時もZshellについての知識が貧しかったため、かなりエレガントでないスクリプトを載せてしまいましたが、
親切な方がよりエレガントなコードを書いてマージして下さいました。ありがとうございました。
しかしいざ自分で弄ろうと思うと自分で書いてないコードの意味など分かるわけもなく、情報を探すのですがなかなか欲しい情報を見つけるのも一苦労。特にZShell特有の書き方などについての情報が少ないようにな気がしました。(すいません、公式のドキュメントとかあるのでしょうが長そうなので読んでません。)
スタックオーバー風呂で外人さんに聞いてみました。
http://stackoverflow.com/questions/23166496/alias-definition-on-mac
そしたら適当にリンクを貼ってくれたので読みました。
英語で「参考にして頑張ります、ありがとう。」的なことを書きましたがジッサイは「頑張ったけどワカラナカッタ」のが本音です。
なのでガチャガチャやってたらおおよそいい感じになりました。
匿名関数を使っているのでグローバルを汚しません。
# Mac Applications in 'Applications' directories -> runnable from the terminal
() { local app dir
for dir in $@; do
for app in $dir/*.app(N); do; alias ${app:t:r:gs/ //}="open \$1 -a ${app:gs/ /\\ /}"; done
for app in $dir/*/*.app(N); do; alias ${app:t:r:gs/ //}="open \$1 -a ${app:gs/ /\\ /}"; done
done
} '/Applications' '~/Applications' '/Applications/Xcode.app/Contents/Applications'
これで例えばCotEditor .zprofileのように的確にドキュメントファイルを指定して開けます。
alias cot=CotEditor
とやると読む時はcat、書く時はcotって感じで面白いですよ。