yunomuのブログ

趣味のこと

Macでターミナルからアプリケーションを立ち上げる

Macはターミナルをメインで使っているんだけどたまにFinderを開きたい事があったりTextEditでファイルを見たい時があって。
Windowsだとstartコマンドでファイルやフォルダを開いたりするところなんだけど、Macだとどうやってやるんだろう。

openコマンドでやるらしいです。なんだやっぱあるんじゃん。
っていうかこれマニュアルのセクション1だけどBSD標準なの?
まあ、なんでも、いいですけれど。

% open test.txt

とやると標準のテキストエディタでtest.txtが開きますし、

% open .

とかやるとカレントディレクトリがFinderで開きます。

だいたいこれでいいんだけど、でもファイル形式が判別できないファイルも多いし、関連付けとは関係なくアプリケーションを指定してファイルを開きたいことも結構ある。
なのでopenはアプリケーション指定もできて、

% open -a TextEdit .zshrc

ってやると".zshrc"をTextEditで開くことができるし、

% open -a TextEdit

ってやると空のTextEditが立ち上がる。

というかそもそもアプリケーションもコマンドで立ち上げたいよねぇ。Spotlightなどに頼らずとも。なんでそれできないんだろう。
まあできなければ作りましょう。シェルスクリプトで書くの面倒くさかったのでRubyで。
/Applicationsの直下にあるXXX.appの全部にaliasを貼ります。シェルで補完してほしいからaliasがいい。スペースはややこしいから詰めた。
bin/macaliases.rb

#!/usr/bin/ruby
Dir.open("/Applications").select {|a| a =~ /.*¥.app$/ }.each {|a|
  print "alias #{a.tr(".app", "").delete(" ")}='open -a ¥"#{a}¥"'", $/
}

これを.zshrcの中でこういう感じで

ruby ~/bin/macaliases.rb > ~/.aliases
source ~/.aliases

これでターミナルがもう少し便利になった。ような気がする。ますます袋小路に迷い込んでるだけな気もする。