Mac OS X で open コマンドを使ってファイルを開く
最近少しだけ PowerBook を使う機会があったのですが Mac OS X にはシェル上で引数として渡したファイルを開く open というコマンドがあって便利に使っていました.
% open hoge.txt # テキストエディタで hoge.txt を開く % open fuga.png # 画像ビューワで fuga.png を開く % open . # ファインダーでカレントディレクトリを開く % open http://www.google.com/ # Safari でGoogleを開く % open mailto:<メールアドレス> # Mail で<メールアドレス>宛のメールを作成
ファイルの拡張子やURIスキームに応じて登録してあるアプリケーションで開いてくれるので CUI なシェル上で作業していて GUI はアプリケーションを起動したいときにはとても便利です.
アプリケーションの起動もできます.
% open /Applications/iCal.app
というかシェルからアプリケーションを起動するまともな方法が open コマンド以外にあるのかしら? まぁ *.app 以下から環境にあった実行ファイルを探して実行してもいいのですけど…
Linux の GNOME 環境でコマンド使ってファイルを開く
で普段は Linux 上で GNOME 環境なので GNOME でもやりたいよね,とか思って深く考えずにコマンドラインで以下のように入力して実行してみました.
% gnome-open test.txt
ちゃんとテキストエディタ(gedit)が起動して test.txt を開いてくれましたとさ…
まぁちょっと考えれば mime-type や拡張子とアプリケーションとの関連付けデータベースを持ってるような環境であればこの手の動作をするコマンドを実装すのは当然という気もしますね.
% gnome-open fuga.png # Eye of GNOME で fuga.png が開く % gnome-open . # Nautilus でカレントディレクトリが開く % gnome-open http://www.google.com/ # ブラウザで Google が開く % gnome-open mailto:<メールアドレス> # MUAで<メールアドレス>宛のメールを作成
シェルから入力するには gnome-open は少し長すぎるので ~/.bashrc でエイリアスを設定して使うことにしました.
alias open="gnome-open"
Linux の KDE 環境でコマンド使ってファイルを開く
Mac OS X や GNOME にできて KDE にできない理由はないですよね.ということでちょっと調べてみると kfmclient コマンドでできるらしい…
% kfmclient exec test.txt
上のようにするとちゃんと KWrite で test.txt が開きました.当然画像ファイルや URI(httpスキーム,mailtoスキーム) も開けます.
kfmclient には exec 以外にも以下のようなコマンドがあってなかなか多機能です. kfmclient --commands でコマンド一覧が表示されます.
- openURL
- openProfile
- openProperties # 指定ファイルのプロパティを開く
- move 'src' 'dest' # ファイルやフォルダの移動
- copy 'src' 'dest' # ファイルやフォルダのコピー
- download URI # 指定 URI のダウンロード
- sortDesktop # デスクトップ上のアイコンを再配置
- configure # konqueror の設定の再読み込み
- configureDesktop # kdesktop の設定の再読み込み
また kfmclient exec でデバイスのマウントやアンマウントまでできるようです.
Windows の cygwin 環境でコマンド使ってファイルを開く
Mac OS X や GNOME や KDE にできて Windows でできない理由はないですよねぇ…
まぁ Windows でコマンドラインを使う場合は cygwin 環境を使っているのでとりあえず cygwin で調べてみると cygstart コマンドというのがありました.
% cygstart test.txt
上のようにするとメモ帳で test.txt が開きました.
cygstart は別に長すぎるということもないのですが環境毎に名前がかわるとややこしいのでこれもエイリアスを設定してしまいました.
alias open="cygstart"
ヘルプを見ると(cygstart --help) 使えるオプションが見れます.これを見ると単純に SHELL32.DLL の ShellExecute() 関数を使って開いていそうな雰囲気ですね…
以下 cygstart --help の一部を引用です.
続きを読む