5 votos

¿Hay un macOS equivalente del comando assoc Windows?

Estoy tratando de cambiar una asociación de archivo en Mac usando a algún tipo de secuencia de comandos. Sé que puedo hacer algo como eso en Windows usando el `` comando.

¿Hay algo scripts en macOS que hará un trabajo similar? No me importa si es en Bash (mi preferencia), AppleScript o algo en Automator.

Soy consciente de la `` comando pero quiero poder hacerlo sin necesidad de software adicional.

5voto

qarma Puntos 71

Cambiar la asociación de archivos para un único archivo o un conjunto de archivos (AppleScript)

Esta secuencia de comandos se muestra en primer lugar que el defecto de la aplicación de algunos de archivo de texto en mi sistema fue creado para la edición de textos. A continuación cambia el archivo de la asociación de ese archivo en particular, por lo que ahora se abre con el Átomo. Por último, los asociados de todos los archivos de texto en el escritorio con el Átomo de aplicación.

tell application "System Events"
    get the default application of the file "/path/to/some file.txt"
        --> alias "Macintosh HD:Applications:TextEdit.app:" of application "System Events"

    # Individual file:
    set the default application of the file "/path/to/some file.txt" to ¬
        the path to the application named "Atom"

    # A set of files:
    set the default application of every file of the desktop folder whose ¬
        name extension = "txt" to the path to the application "Atom"
end tell

El cambio de las asociaciones de archivo para todos los archivos de un tipo determinado (JXA)

El uso de JavaScript para la Automatización, puede implementar los Cimientos Básicos de las funciones de una manera que no puedes hacer con AppleScriptObjC, así como para interactuar con el Lanzamiento de los Servicios a nivel de sistema y cambiar la asociación de archivos para un determinado tipo de archivo.

Aquí, he dirigida a los archivos de texto sin formato (estos tienen extensión .txt por defecto), y se cambia el valor predeterminado de la aplicación que responde a Átomo:

ObjC.import('CoreServices');

var contentType = 'public.plain-text';
var bundleID = Application('Atom').id();

$.LSSetDefaultRoleHandlerForContentType(
            contentType, 
            $.kLSRolesAll, 
            bundleID
        );

El tipo de archivo debe ser dirigida por medio de un Identificador de Tipo Uniforme. Estas son las cadenas de texto que identifican a una determinada clase o tipo de elemento. El enlace le llevará a una página con una lista de Apple del sistema-declaró infecciones urinarias de todas las probabilidades de los tipos de archivo que usted estará interesado en. Tenga cuidado de no simplemente elegir el que parece coincidir con sus necesidades a primera vista, como las infecciones urinarias son estructurados en una especie de árbol de herencia. Por lo tanto, podría haber perezosamente escogido public.text, y yo la vi primero en la lista, hasta que en más de la lectura, nos enteramos de que esta infección urinaria es un tipo de base de todo el texto, que incluiría HTML y RTF archivos.

3voto

Oskar Puntos 1242

Desde el sistema macOS utiliza Servicios de Lanzamiento de la base de datos y utilidades para el mapa de tipos de archivo y, en segundo lugar, extensiones de archivos con las aplicaciones que los abra, el paralelismo más cercano a assoc serían lsregister

Es sepultado en el interior de la carpeta del sistema, los Servicios Básicos, el marco que contiene el LaunchServices.

Hay un montón de buenas preguntas y respuestas aquí, una vez que se conoce la utilidad de búsqueda de como hay toneladas de excelente blog, desarrollador de guías y documentación oficial.

Desde que tengo /usr/local/bin en mi camino, yo generalmente sym link de allí, así que puede tipo de host:

mac:~ me$ ln -s /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister  /usr/local/bin
mac:~ me$ lsregister
lsregister: [OPTIONS] [ <path>... ]
                      [ -apps <domain>[,domain]... ]
                      [ -libs <domain>[,domain]... ]
                      [ -all  <domain>[,domain]... ]

Paths are searched for applications to register with the Launch Service database.
Valid domains are "system", "local", "network" and "user". Domains can also
be specified using only the first letter.

  -kill     Reset the Launch Services database before doing anything else
  -seed     If database isn't seeded, scan default locations for applications and libraries to register
  -lint     Print information about plist errors while registering bundles
  -lazy n   Sleep for n seconds before registering/scanning
  -r        Recursive directory scan, do not recurse into packages or invisible directories
  -R        Recursive directory scan, descending into packages and invisible directories
  -f        force-update registration even if mod date is unchanged
  -u        unregister instead of register
  -v        Display progress information
  -gc       Garbage collect old data and compact the database
  -dump     Display full database contents after registration
  -h        Display this help

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