La aplicación Terminal de macOS: Una forma sencilla de editar archivos de lista de propiedades y optimizar tu trabajo

por admin

Las listas de propiedades son esencialmente archivos XML con una extensión .plist. A continuación se explica cómo editarlos usando la línea de comando en la aplicación Terminal de macOS.

XML es un formato de datos abiertos que ganó popularidad a mediados de la década de 1990, cuando se comercializó Internet por primera vez. Es un formato basado en texto que utiliza pares clave/valor para almacenar datos. Las claves proporcionan etiquetas de datos y los valores almacenan los datos relacionados con cada clave.

Los tipos de datos en XML incluyen booleanos (verdadero/falso), números, fechas, cadenas (texto), matrices, diccionarios y datos sin formato. Un diccionario es simplemente una tabla de valores agrupada que también tiene su propio conjunto de claves, una para cada elemento de datos.

Al combinar e incrustar estos tipos de datos en un archivo XML, puede almacenar una variedad de datos anidados para casi cualquier cosa. Si bien XML generalmente se almacena como texto sin formato, también se ha convertido en un estándar para el intercambio de datos de información a través de Internet, aunque hoy en día ha sido reemplazado principalmente por JSON (Javascript Object Notation), que es algo similar.

XML en plataformas Apple

Cuando se lanzó la primera versión de Mac OS X en 2000, Apple dejó en claro que estaba adoptando XML como formato de archivo para gran parte del sistema operativo Mac. Apple utiliza un formato de archivo nativo llamado Listas de propiedades (.plist), que es XML simple con información de encabezado XML de Apple personalizada en la parte superior de cada archivo.

Es posible que haya visto archivos .plist en sus carpetas de Preferencias de macOS en /Library/Preferences o ~/Library/Preferences. Estos son archivos XML simples que contienen listas de datos XML que las aplicaciones o el propio macOS pueden leer para almacenar preferencias.

Por ejemplo, el archivo de configuración del Finder de macOS se encuentra en la carpeta Preferencias y se llama com.apple.Finder.plist. La mayoría de los archivos de configuración .plist utilizan esta forma de notación DNS inversa: el segundo componente en el nombre del archivo identifica la empresa que fabrica el software, luego el nombre de la aplicación y luego la extensión .plist.

Puede abrir un archivo .plist en la aplicación TextEdit de Apple para leerlo como texto sin formato, o puede abrirlo en el IDE de desarrollador de Apple, Xcode, o en casi cualquier otra aplicación de edición de texto sin formato.

Xcode tiene una función de formato especial que muestra un archivo .plist como un editor de tablas con cada tipo de datos en una fila que contiene el tipo de datos y su clave. Al hacer clic en un menú emergente junto a cada elemento de la tabla, puede cambiar su tipo a cualquier tipo de formato conocido.

Los datos .plist de tipos genéricos, desconocidos u opacos se tratan como un blob de datos o, en el caso de la programación de la plataforma Apple, un tipo de datos de Data (en Swift), o NSData en Objetivo-C.

Las aplicaciones también incluyen archivos .plist en macOS, iOS, iPadOS y watchOS para describir aplicaciones y almacenar contenido. El archivo Info.plist, por ejemplo, describe cada aplicación y sus capacidades para el sistema operativo.

Existen API de sistema en los sistemas operativos de Apple para transformar y serializar XML y .plists hacia y desde otros formatos de datos.

Editar listas de propiedades

Como se mencionó, puede editar archivos .plist directamente abriéndolos en un editor de texto sin formato o en Xcode.

Si abre un archivo .plist en TextEdit, por ejemplo, verá XML sin formato con etiquetas. Para cambiar los datos de un archivo .plist en un editor de texto, necesitará comprender las etiquetas XML y cómo funcionan. Las etiquetas XML son muy similares a las etiquetas HTML.

En Xcode, puede simplemente abrir un archivo .plist o agregarlo a una ventana de proyecto de Xcode y luego hacer clic en él en el Navegador de proyectos a la izquierda. Esto muestra el contenido del .plist en el panel de la derecha:

Ventana de Xcode que muestra un archivo plist con información de la versión.

Editando un archivo .plist en Xcode de Apple.

La ventana anterior muestra el archivo version.plist para la aplicación Chess de Apple: cada fila es un elemento de datos, las claves para cada elemento se enumeran en la columna de la izquierda, cada tipo de datos se muestra en la columna central y el valor de cada clave en la columna de la el derecho.

Para cambiar los datos de un archivo .plist en Xcode, haga clic en los datos o clave de una fila y escriba nueva información, o haga clic en el pequeño menú emergente en la columna central de la fila para cambiar su tipo. En el menú emergente solo se enumeran los tipos de datos .plist permitidos y conocidos.

Una vez que haya realizado todos los cambios que desea, simplemente Archivo->Guardar el archivo .plist (o presione Comando-S en su teclado).

Una gran ventaja de XML es que puedes editar los archivos en cualquier plataforma, guardarlos y luego copiarlos entre computadoras sin tener que convertirlos. Software localización a menudo se hace de esta manera: con cadenas de texto almacenadas en archivos .strings para traducir entre idiomas. Los archivos de cadenas también contienen XML estándar que utiliza pares clave/valor.

Los archivos InfoPlist.strings incluidos dentro de las aplicaciones contienen versiones localizadas de cadenas que se encuentran en la información descriptiva para identificar una aplicación. Este es el texto que aparece, por ejemplo cuando haces un Archivo->Obtener información en una aplicación en el Finder.

Más recientemente, un archivo version.plist incluido dentro de cada aplicación puede contener la información de versión de la aplicación almacenada en formato XML utilizando claves de Apple como CFBundleVersion y CFBundleShortVersionString .

Apple tiene una sección en la documentación del desarrollador que analiza las listas de propiedades de información.

El prefijo «CF» en las claves .plist de Apple representa Fundación central – una API basada en C utilizada para manipular tipos de datos base y .plists en plataformas Apple.

Archivos de cadenas en el desarrollo de la plataforma Apple.

En el desarrollo de Apple, las cadenas suelen almacenarse en un archivo .strings o en una tabla de cadenas para su localización. Los desarrolladores pueden subcontratar sus archivos de cadenas para la localización a empresas de traducción para que ellos no tengan que hacer la traducción.

Si miras dentro del paquete (carpeta) de una aplicación, es posible que veas varios archivos .strings almacenados en carpetas de idiomas, cada carpeta termina en «.lproj» y con un prefijo de dos caracteres estándar ISO para el nombre del país. Al duplicar y cambiar el contenido de cada versión de los archivos de cadenas, los desarrolladores pueden agregar nuevos idiomas a las interfaces de las aplicaciones sin tener que conocer los idiomas.

macOS e iOS son lo suficientemente inteligentes como para cargar el archivo o tabla de cadenas localizadas correctas para el idioma actual en uso en un dispositivo Apple.

Al utilizar cadenas separadas y archivos .plist, la interfaz de usuario de una aplicación se puede cambiar en tiempo de ejecución o más tarde, sin tener que compilar el texto en el código binario de la aplicación. Esto se conoce como Carga dinámica.

Es por eso que puedes cambiar el idioma del sistema en Configuración en un dispositivo Apple y hacer que la misma aplicación actualice su texto de interfaz de usuario para el nuevo idioma seleccionado. En los sistemas operativos más antiguos, los proveedores tenían que enviar versiones separadas de una aplicación para cada país o idioma.

La carga dinámica también reduce el uso de memoria de una aplicación en tiempo de ejecución, ya que las cadenas no se cargan en la memoria hasta que realmente se utilizan.

Puede obtener más información sobre los formatos .plist y los tipos de CF en Terminal escribiendo

Puede obtener más información sobre los formatos .plist y los tipos de CF en Terminal escribiendo «man plist».

Editar listas de propiedades en la Terminal

macOS incluye una aplicación Terminal (shell) (UNIX) que le permite emitir comandos en la línea de comandos para realizar acciones. Uno de los usos más potentes de Terminal es el procesamiento por lotes y la escritura de scripts para automatizar procesos.

Muchos comandos de Terminal incluyen un -r (recursivo) para indicarle al comando que continúe procesando todos los archivos que encuentre en una carpeta determinada, sin importar cuán profundamente anidados puedan estar esos archivos.

Puede usar Terminal para procesar archivos .plist y .strings de forma manual y automática para una edición más rápida.

Esto puede ahorrar tiempo, por ejemplo, si tiene un lote de archivos para varios idiomas y desea reemplazar todos sus valores con nuevo texto localizado de tablas de idiomas o algunas otras entradas. O quizás desee cambiar todas las claves de un determinado elemento en un lote de archivos a la vez sin tener que editar cada archivo manualmente.

No entraremos en la automatización de scripts de shell en este artículo, pero hay muchos buenos libros y tutoriales en línea para escribir scripts de shell para procesamiento por lotes.

OS X solía venir en cajas

OS X solía venir en cajas

Editar una lista de propiedades en Terminal manualmente

Para editar un archivo .plist en Terminal, use la herramienta incorporada defaults dominio. defaults le permite editar y ver archivos .plist, así como establecer configuraciones del sistema para archivos .plist del sistema operativo conocidos usando nombres.

Para un uso completo del defaults comandos, en tipo de Terminal:

man defaults y presione Devolver en tu teclado.

Para salir del sistema man en Terminal presione Control-Z.

La principal opción para defaults cambiar un valor en un archivo .plist existente es el write opción seguida del nuevo dato a escribir.

Como menciona la página de manual, los nuevos datos deben estar en un formato específico (generalmente otro .plist o diccionario) y deben contener las claves y valores que se escribirán. El formato de estos datos debe ser exacto; de lo contrario, el comando puede fallar o los datos del archivo pueden dañarse.

Por ejemplo, la página de manual muestra cómo cambiar una matriz en un .plist que tiene el nombre «Color predeterminado» a un nuevo valor de (255,0,0). Para hacer esto usarías el comando:

defaults write com.companyname.appname "Default Color" '(255, 0, 0)'

Donde «appname» es el nombre de la aplicación de la empresa «companyname».

También puede sobrescribir los valores existentes en un .plist con otro .plist. Por ejemplo:

defaults write com.companyname.appname '{ "Default Color" = (255, 0, 0); "Default Font" = Helvetica; }';

En este ejemplo, los nuevos datos .plist están entre llaves y contienen dos pares clave/valor: «Color predeterminado» y «Fuente predeterminada».

Tenga cuidado al escribir en archivos de configuración existentes porque si corrompe los datos en un archivo .plist utilizado por macOS, su Mac puede dejar de funcionar correctamente.

También hay delete opciones para defaultspero ten en cuenta delete Es incluso más peligroso que el write opción. Algunos de los delete Las opciones destruyen datos e incluso pueden eliminarlos. todo datos en un dominio con un solo comando.

Puede imprimir una lista de todos los dominios en su Mac usando el domains opción:

Puede obtener más información sobre los formatos .plist en Terminal escribiendo

Puede obtener más información sobre los formatos .plist en Terminal escribiendo «man plist».

Editar un archivo de lista de propiedades fuera de un dominio de configuración

Para editar cualquier archivo .plist arbitrario ubicado en cualquier ubicación grabable en el sistema de archivos, use el filepath opción. Esto le permite editar un .plist de la misma manera que lo hizo anteriormente para los archivos de configuración, pero para cualquier archivo .plist en cualquier ruta determinada. filepath también funciona con el read dominio.

defaults read ~/Library/Containers/com.apple.TextEdit/Data/Library/Preferences/com.apple.TextEdit.plist

lee el archivo de configuración de la aplicación TextEdit ubicado en la carpeta Biblioteca del usuario.

Pero el filepath La opción funciona para cualquier Archivo .plist: no solo para archivos de configuración o archivos que pertenecen a aplicaciones.

Escribiendo y combinando defaults comandos en un archivo de script automatizado, puede ver lo fácil que sería procesar por lotes archivos .plist sin demasiado esfuerzo.

De hecho, gran parte del software Apple de terceros se construye de esta manera: generalmente un ingeniero de compilación escribe scripts de automatización para recuperar una base de código de un servidor, procesa por lotes archivos .plist y cadenas localizados y luego ejecuta compilaciones en todos los componentes del software. Las compilaciones generalmente se procesan posteriormente utilizando otro conjunto de archivos de secuencias de comandos para ensamblar el software final para su lanzamiento.

El defaults El comando también tiene opciones para agregar o reemplazar tipos específicos de datos a un archivo .plist.

El sistema predeterminado ha existido en macOS, Mac OS X e iOS durante décadas y, de hecho, fue una de las tecnologías originales utilizadas en NeXTStep, el precursor de la mayoría de los sistemas operativos de Apple en la actualidad.

Una vez que domines el sistema de valores predeterminados, lo usarás mucho para inspeccionar y cambiar la configuración de macOS y editar archivos .plist. Sólo asegúrese de sentirse cómodo y seguro al hacerlo antes de usarlo.

Apple tiene una breve sección en la Guía del usuario de Terminal que describe cómo usar el sistema predeterminado para editar archivos y configuraciones .plist.

Si usa una computadora con Windows, consulte las geniales herramientas de edición XML creadas por Altova.

Síguenos en YouTube: @PCenterES

También le puede interesar

Deja un comentario