Змінити об'єднання файлів у терміналі?


18

Чи існує спосіб асоціації типів файлів із програмами через термінал? Я думав, що ~ / Library / Preferences / com.apple.launchservices.plist може це зробити, і я також бачив: Чому командний рядок змінюється на ~ / Бібліотека / Налаштування / com.apple.LaunchServices.plist не діє негайно? але я не можу, здається, спрацювати.

Я думаю, я шукаю спосіб наслідувати те, що робить графічний інтерфейс, коли хтось використовує його для зміни типів асоціацій, він, здається, працює тут же ...

Відповіді:


8

Після редагування ~/Library/Preferences/com.apple.LaunchServices.plistв XML ви можете редагувати текстовий редактор:

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

Потім додайте такі записи до LSHandlersмасиву:

<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>

Ви можете використовувати mdlsдля перегляду UTI типів файлів і щось на зразок osascript -e 'id of app "AppName"'перегляду ідентифікаторів пакетів програм.

Ви можете застосувати зміни до com.apple.LaunchServices.plistперезавантаження. Вихід із системи та повернення в систему недостатньо.


ПРИМІТКА : dutiбільше не знаходиться в активному розвитку, і її поціновувачі позначені як "непідтримувані". З 2012 року проект не спостерігав значного прогресу, окрім оновлень конфігурації. Він перемістився з Sourceforge до Github. Цю відповідь було оновлено, щоб включити нові посилання.

Я також використовую дуті, хоча. Я зберегла такий файл (приблизно зі 100 рядками) як ~/.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

У мене є агент запуску, який duti ~/.dutiавтоматично запускається при ~/.dutiзміні.

Зазвичай ви можете використовувати розширення імен файлів (як .jpg) замість UTI (подібних public.jpg) для вказівки типів файлів. dutiперетворює розширення в UTI, які також застосовуються до інших розширень (наприклад .jpeg). Для деяких розширень, таких як .mkvі .tex, UTI залежить від того, яка програма спочатку зареєструвала розширення.

Остання версія з dutiтільки включає в себе вихідний код, але 1.5.0 також включає в себе установку.


5

Ознайомтеся з дуті :

duti - це інструмент командного рядка, написаний Ендрю Мортенсеном, призначений для встановлення програм за замовчуванням для типів документів та схем URL-адрес у Mac OS X.

Типи документів у Mac OS X визначаються тим, що Apple називає уніфікованими ідентифікаторами типу або UTI. Наприклад, HTML-файли мають UTI public.html. Документи Microsoft Word описані UTI com.microsoft.word.doc. Apple надає багато UTI з Mac OS X, але розробники можуть вільно визначити їх, доки UTI унікальний для цього типу документа.

Ім'я duti означає "за замовчуванням для UTI".


2
Обов’язкова пропозиція: використовуйте brew install dutiдля встановленняduti
П'єр Паоло Рамон

1

Ось запуск агента для дуті, який зробить трюк:

<?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>

Очевидно, замініть joshgummersallвласним іменем користувача. Я розмістив цей файл у ~/Library/LaunchAgents/duti.plist, chmmodd до 644 і побіг:

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

0

Коротка відповідь: Асоціація додатків файлу зберігається у вилці ресурсу файлу , і Apple надає дві утиліти ( Rez і DeRez ), які дозволяють маніпулювати виделкою ресурсів., Але це не для слабкого серця.

Для отримання більш детальної інформації, на це запитання відповідає дуже ретельно в Super User:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.