スクリプト/コマンドラインを介してデフォルトのアプリケーション(ファイル拡張子用)を変更しますか?


11

Appleスクリプト、コマンドラインコマンド(などdefaults write [...])を介してファイル拡張子のデフォルトアプリケーションを定義する方法はありますか?

情報パネルまたはRCDefaultAppを使用して手動で変更できることはわかっていますが、多くのマシンとユーザーアカウントをセットアップする必要があるため、プロセスを自動化する方法を見つけたいと思います。

回答:


6

dutiは、テキストファイルを使用してファイルタイプとURLスキームのデフォルトアプリケーションを構成できるようにするシェルユーティリティです。

たとえば、次のようにファイルを保存します~/.duti

com.gnu.Emacs public.plain-text all 
com.gnu.Emacs public.unix-executable all
org.videolan.vlc .mkv all

次にを実行しduti ~/.dutiます。

dutiは、をbrew install duti使用して、またはを実行してインストールできwget https://github.com/fitterhappier/duti/archive/duti-1.5.2.tar.gz;tar -xf duti-1.5.2.tar.gz;cd duti-duti-1.5.2;./configure;make;sudo make installます。


OS X 10.7.xまたは10.8.xではコンパイルできないようですが、これは有望なようですchecking which SDK to use... configure: error: darwin12.0.0 is not a supported system
Mathias Bynens 2012

pkgインストーラのバイナリは、10.8でも動作します。
Lri 2012

そうですか。将来の参考のために、ここでそのダウンロードへのリンクがあります:downloads.sourceforge.net/project/duti/duti/duti-1.5.0/...
マティアスBynens

これは10.8で動作しますか?.aviファイルをQuicktime Playerで開くようにデフォルトのアプリケーションを設定し(Finder→ Get InfoOpen with…→_Change allduti -s org.videolan.vlc public.avi allを使用)、代わりにVLCを使用して実行し、LaunchServices再起動しましたが、効果がないようです。(システム宣言されたUTIのリストを参照してください。)
Mathias Bynens 2012

1
少なくとも私にとってはうまくいきます。Launch Servicesデータベースの再構築や再起動などは必要ありません。を見てみると~/Library/Preferences/com.apple.LaunchServices.plist、dutiはほとんどのファイル名拡張子を自動的にUTIに変換するため、通常、.aviではなくのようなタイプを指定できますpublic.avi。一部のファイル名拡張子のUTIは、インストールされているアプリケーションによって異なります。
Lri

12

Launch Servicesは、デフォルトのファイルの関連付けを担当します。

すべてのテキストファイルをSublime Text 2で開くように変更したいとします。

まず、私が使用することができます崇高テキスト2用kMDItemCFBundleIdentifierを必要とするのMDLを、この情報を取得するには:

> mdls /Applications/Sublime\ Text\ 2.app 
_kTimeMachineIsCreationMarker  = 1
_kTimeMachineNewestSnapshot    = 4001-01-01 00:00:00 +0000
_kTimeMachineOldestSnapshot    = 2012-02-22 03:49:19 +0000
kMDItemCFBundleIdentifier      = "com.sublimetext.2"
....snip....

mdlsを使用してテキストファイルの1つを検査することで、テキストファイルのコンテンツタイプの値を確認できます。

> mdls test.txt 
kMDItemContentCreationDate     = 2012-03-25 04:18:50 +0000
kMDItemContentModificationDate = 2012-03-25 04:18:50 +0000
kMDItemContentType             = "public.plain-text"
kMDItemContentTypeTree         = (
    "public.plain-text",
    "public.text",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemDateAdded               = 2012-03-25 04:18:50 +0000
kMDItemDisplayName             = "test.txt"
kMDItemFSContentChangeDate     = 2012-03-25 04:18:50 +0000
kMDItemFSCreationDate          = 2012-03-25 04:18:50 +0000
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "test.txt"
kMDItemFSNodeCount             = 975
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 975
kMDItemFSTypeCode              = ""
kMDItemKind                    = "Plain Text"
kMDItemLogicalSize             = 975
kMDItemPhysicalSize            = 4096

この場合、すべてのpublic.plain-textタイプのデフォルトアプリケーションを変更します。

これを行うには、次のように入力します。

defaults write com.apple.LaunchServices LSHandlers -array-add '{ LSHandlerContentType = \"public.plain-text\"; LSHandlerRoleAll = \"com.sublimetext.2\"; }'

変更を有効にするには、次のようにLaunch Servicesを再起動する必要があります。

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user

そして、信用が必要な場所で信用を与えるために、私はこのstackoverflow.comの質問と回答からこのアプローチについて学びました:https : //stackoverflow.com/questions/9172226/how-to-set-default-application-for-specific-file -types-in-mac-os-x


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.