Terminaldeki dosya ilişkilendirmesi değiştirilsin mi?


18

Terminal aracılığıyla dosya türlerini uygulamalarla ilişkilendirmenin bir yöntemi var mı? ~ / Library / Preferences / com.apple.launchservices.plist'in bunu yapabileceğini düşündüm ve ben de gördüm: ~ / Library / Preferences / com.apple.LaunchServices.plist için bir komut satırı değişikliği neden hemen etkili değil? ama çalışmasını sağlayamıyorum.

Sanırım birisi ilişkilendirme türlerini değiştirmek için kullandığında GUI'nin ne yaptığını taklit etmenin bir yolunu arıyorum, orada anında çalışıyor gibi görünüyor ...

Yanıtlar:


8

Sen düzenleyebilir ~/Library/Preferences/com.apple.LaunchServices.plistXML dönüştürerek sonra bir metin editörü:

plutil -convert xml1 ~/Library/Preferences/com.apple.LaunchServices.plist

Ardından LSHandlersdiziye bunun gibi girişler ekleyin :

<dict>
  <key>LSHandlerContentType</key>
  <string>com.adobe.pdf</string>
  <key>LSHandlerRoleAll</key>
  <string>net.sourceforge.skim-app.skim</string>
</dict>
<dict>
  <key>LSHandlerContentTag</key>
  <string>mkv</string>
  <key>LSHandlerContentTagClass</key>
  <string>public.filename-extension</string>
  <key>LSHandlerRoleAll</key>
  <string>org.videolan.vlc</string>
</dict>

Sen kullanabilirsiniz mdlsgibi dosya türleri ve bir şey İYE görmek için osascript -e 'id of app "AppName"'uygulamaların paket tanımlayıcıları görmek için.

Değişiklikleri com.apple.LaunchServices.plistyeniden başlatarak uygulayabilirsiniz . Oturumu kapatıp tekrar açmak yeterli değil.


NOT : dutiartık aktif geliştirme aşamasında değildir ve destekçileri tarafından "desteklenmiyor" olarak etiketlenmiştir. Proje, 2012'den bu yana yapılandırma güncellemeleri dışında önemli bir ilerleme kaydetmedi. Sourceforge'dan Github'a taşındı. Bu yanıt, yeni bağlantıları içerecek şekilde güncellendi.

Ben de duti kullanıyorum . Bunun gibi bir dosya (yaklaşık 100 satır ile) kaydettik ~/.duti:

org.gnu.Emacs public.plain-text all # .txt, .text, plain text files without an extension
org.gnu.Emacs public.unix-executable all # executable scripts
com.SequentialX.Sequential .jpg all
org.videolan.vlc .mkv all

Ben değiştiğinde duti ~/.dutiotomatik olarak çalışan bir launchd ajan var ~/.duti.

Dosya türlerini belirtmek için normalde .jpgbir UTI (like public.jpg) yerine dosya adı uzantılarını (like ) kullanabilirsiniz . dutiuzantıları diğer uzantılar için de geçerli olan UTI'lara dönüştürür (gibi .jpeg). Gibi bazı uzantılar için .mkvve .tex, İYE ilk uzatma kayıtlı hangi uygulama bağlıdır.

En son sürüm arasında dutisadece kaynak kodunu içerir, ancak 1.5.0 de bir yükleyici içerir.


5

Duti'ye göz atın :

duti, Mac OS X'te belge türleri ve URL şemaları için varsayılan uygulamaları ayarlamak üzere tasarlanmış Andrew Mortensen tarafından yazılmış bir komut satırı aracıdır.

Mac OS X'teki belge türleri, Apple'ın Tek Tip Tür Tanımlayıcıları veya UTI'ler olarak adlandırdığı şeyle tanımlanır. Örneğin, HTML dosyalarında public.html bir UTI bulunur. Microsoft Word belgeleri UTI com.microsoft.word.doc tarafından açıklanmıştır. Apple, Mac OS X ile birçok UTI sağlar, ancak UTI bu belge türüne özgü olduğu sürece geliştiriciler kendi tanımlarını yapmakta özgürdür.

duti'nin adı "İYE için varsayılan" anlamına gelir.


2
Zorunlu öneri: brew install dutiyüklemek için kullanınduti
Pier Paolo Ramon

1

İşte duti için hile yapacak bir fırlatma ajanı:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.duti.watcher</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/duti</string>
      <string>/Users/joshgummersall/.duti</string>
    </array>
    <key>UserName</key>
    <string>joshgummersall</string>
    <key>KeepAlive</key>
    <false/>
    <key>WatchPaths</key>
    <array>
      <string>/Users/joshgummersall/.duti</string>
    </array>
  </dict>
</plist>

Açıkçası joshgummersallkendi kullanıcı adınızla değiştirin . Bu dosyayı ~/Library/LaunchAgents/duti.plist, chmmodd-644'e yerleştirdim ve koştum:

$ launchctl load -F -w ~/Library/LaunchAgents/duti.plist

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.