これは可能ですが、おそらくあなたが考えるほど簡単ではありません。Uniform Type Identifiersをよく理解する必要があります。WikipediaのUniform Type Identifierページを見てください。
OS Xは、優先ファイルの関連付けに関する情報を、という名前の設定ファイルに保存しますcom.apple.LaunchServices.plist
。そのファイルを見つけて変更する前に、デフォルトのOS Xのドメイン階層(別名「設定」)をよく理解しておくことをお勧めします。これに関するまともな記事はここにあります。(免責事項:彼らはそのサイトで何かを販売しているようです。私はそれが何であるかを知りませんし、それらとは関連がありません。説明は単なる良い説明です。)
デフォルトとUTI(医療の種類ではない)についてすべて理解したところで、スクリプト/コマンドラインからファイルの関連付けを設定する方法について説明します。
まず、関連付けを行うファイルを識別する適切な方法を知る必要があります。
UTIが重要であると私が言った方法を覚えていますか?ファイルを識別する方法は複数あります。型がシステムで正式に宣言されているかどうかによって異なります。たとえば、TextMateやTextWranglerなどのまともなテキストエディターは、システムで使用するときに、型階層にかなりの数の型宣言を追加します。ただし、これらのアプリケーションがない場合は、これらの型が宣言されていない可能性があります。
わかりました、十分な話。例:
ファイルのUTIを取得します。
$ mdls myFile.xml
...
kMDItemContentType = "public.xml"
kMDItemContentTypeTree = (
"public.xml",
"public.text",
"public.data",
"public.item",
"public.content"
)
...
うんいいね。使用できる明示的なコンテンツタイプ。それをどこかに書き留めてください。
$ mdls myFile.myExtn
...
kMDItemContentType = "dyn.ah62d4rv4ge8048pftb4g6"
kMDItemContentTypeTree = (
"public.data",
"public.item"
)
...
おっとっと。OS Xは ".myExtn"ファイルを認識しません。したがって、それは私たちが何にも使用できない動的UTIを作成しました。そして親の型はあまりにも一般的すぎて役に立たない。
ファイルが何であるかがわかったところで、LaunchServices.plistファイルを見て、何ができるか見てみましょう。
$defaults read com.apple.LaunchServices
{
...
LSHandlers = (
{
LSHandlerContentType = "public.html";
LSHandlerRoleAll = "com.apple.safari";
LSHandlerRoleViewer = "com.google.chrome";
},
...
{
LSHandlerContentTag = myExtn;
LSHandlerContentTagClass = "public.filename-extension";
LSHandlerRoleAll = "com.macromates.textmate";
},
...
);
...
}
したがって、「良い」コンテンツタイプを使用する場合は、最初の構成の方が適しています。それ以外の場合、他の構成要素。そのファイルには他の構成要素がありますが、それらはあなたが尋ねたものとは関係ありません。出力を確認するときに、それらが存在することを確認してください。
ご覧のとおり、使用するアプリケーションのUTIを見つける必要があります。上記の例ではSafarとTextMateのUTIを使用していますが、一般的にアプリケーションのUTIを見つけるには、次のようにします。
$ cd /Applications/MyApp.app/Contents
$ less Info.plist
...
<key>CFBundleIdentifier</key>
<string>com.apple.Safari</string>
...
注:私は持っていない無 LSHandlerRoleAllとLSHandlerRoleViewerの違いを構成するもののアイデアを。そのドキュメントはどこにも見つかりません。私がやる参照してくださいLSHandlerRoleAllは一組だけ(つまり、全くLSHandlerRoleViewerはありません)、それはあなたがでタイプを関連付けるために望んでいることをアプリケーションにUTIに設定されていることである時のそれは99%です。
これまでのところ、ここでは、読者のための演習として必要な値を設定する方法を説明します。これらのものをいじることはやや危険です。ファイルをめちゃくちゃにして、ファイルの関連付けをまったく機能させないことは完全に可能です。次に、ファイルを破棄してやり直す必要があります。
いくつかのヒント:
defaults write
とその構文を読んでください
- を見てください
PlistBuddy
。 man PlistBuddy
そして/usr/libexec/PlistBuddy -h
- このナンセンスをすべてスキップして、RCDefaultAppを使用してください。