28 votos

Cambio de asociación de archivo en la terminal?

Hay un método para asociar tipos de archivos con las aplicaciones a través de la terminal? Pensé ~/Library/Preferences/com.apple.launchservices.plist podría hacerlo, y también he visto: ¿por Qué es una línea de comando cambiar a ~/Library/Preferences/com.apple.LaunchServices.plist no es efectiva de inmediato? pero me parece que no puede conseguir trabajo.

Supongo que estoy buscando una manera de imitar lo que la interfaz gráfica de usuario hace cuando alguien lo usa para cambiar los tipos de asociaciones, parece que funciona al instante lo que hay...

11voto

Darren Puntos 46

Echa un vistazo duti:

duti es una herramienta de línea de comandos escrito por Andrew Mortensen, diseñado para aplicaciones por defecto para los tipos de documentos y esquemas de URL en Mac OS X.

Tipos de documentos en Mac OS X se define por lo que Apple llama de Tipo Uniforme Identificadores, o infecciones urinarias. Los archivos HTML, por ejemplo, tener una ITU de public.html. Los documentos de Microsoft Word son descritos por la infección del tracto urinario com.microsoft.word.doc. Apple ofrece muchas infecciones urinarias con Mac OS X, pero los desarrolladores son libres de definir sus propios, siempre y cuando la infección del tracto urinario es único para ese tipo de documento.

duti nombre significa "predeterminado para la infección del tracto urinario."

10voto

Fuzzy Purple Monkey Puntos 702

Usted puede editar ~/Library/Preferences/com.apple.LaunchServices.plist en un editor de texto después de la conversión a XML:

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

A continuación, agregue las entradas como esta a la LSHandlers matriz:

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

Usted puede utilizar mdls para ver la incidencia de infecciones urinarias de tipos de archivo y algo como osascript -e 'id of app "AppName"' para ver el paquete de identificadores de aplicaciones.

Usted puede aplicar los cambios a com.apple.LaunchServices.plist reiniciando. El registro de salida y la de regreso en casa no es suficiente.


Yo también uso duti , aunque. He guardado un archivo como este (con cerca de 100 líneas) ~/.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

Tengo un launchd agente que se ejecuta duti ~/.duti automáticamente cuando ~/.duti es cambiado.

Usted puede usar normalmente extensiones de nombre de archivo (como .jpg) en lugar de una Uti (como public.jpg) para especificar los tipos de archivo. duti convierte las extensiones para las infecciones urinarias que también se aplican a otras extensiones (como .jpeg). Para algunas extensiones como .mkv y .tex, la infección del tracto urinario depende de la aplicación que registró la extensión de la primera.

La última versión de duti (1.5.1) sólo se incluye el código fuente, pero 1.5.0 también incluye un instalador.

1voto

Josh Puntos 121

Respuesta corta: Un archivo de la asociación de la aplicación se almacena en el archivo de la bifurcación de recursos, y Apple ofrece dos servicios públicos (Rez y DeRez) que permiten la manipulación de los recursos horquillas., pero esto no es para los débiles de corazón.

Para más detalles, esta pregunta se responde muy bien en el Super Usuario:

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X