Pular para o conteúdo

O aplicativo Terminal do macOS permite editar arquivos de lista de propriedades com facilidade

Tempo de leitura: 8 minutos

As listas de propriedades são essencialmente arquivos XML com extensão .plist. Veja como editá-los usando a linha de comando no aplicativo macOS Terminal.

XML é um formato de dados aberto que ganhou popularidade em meados da década de 1990, quando a Internet foi comercializada pela primeira vez. É um formato baseado em texto que usa pares chave/valor para armazenar dados. As chaves fornecem rótulos de dados e os valores armazenam os dados relacionados a cada chave.

Os tipos de dados em XML incluem booleanos (verdadeiro/falso), números, datas, strings (texto), matrizes, dicionários e dados simples. Um dicionário é apenas uma tabela agrupada de valores também com seu próprio conjunto de chaves – uma para cada item de dados.

Ao combinar e incorporar esses tipos de dados em um arquivo XML, você pode armazenar uma variedade de dados aninhados para praticamente qualquer coisa. Embora o XML seja geralmente armazenado como texto simples, ele também se tornou um padrão para o intercâmbio de informações e dados pela Internet – embora hoje tenha sido substituído principalmente pelo JSON (Javascript Object Notation), que é um tanto semelhante.

XML em plataformas Apple

Quando a primeira versão do Mac OS X foi lançada em 2000, a Apple deixou claro que estava adotando XML como formato de arquivo para grande parte do sistema operacional Mac. A Apple usa um formato de arquivo nativo chamado Listas de propriedades (.plist) que é XML simples com algumas informações de cabeçalho XML personalizadas da Apple na parte superior de cada arquivo.

Você pode ter visto arquivos .plist nas pastas de Preferências do macOS em /Library/Preferences ou ~/Library/Preferences. São arquivos XML simples que contêm listas de dados XML que podem ser lidos por aplicativos ou pelo próprio macOS para armazenar preferências.

Por exemplo, o arquivo de configurações do macOS Finder fica na pasta Preferências e é denominado com.apple.Finder.plist. A maioria dos arquivos de configuração .plist usa esta forma de notação DNS reversa: o segundo componente no nome do arquivo identifica a empresa que fabrica o software, depois o nome do aplicativo e, em seguida, a extensão .plist.

Você pode abrir um arquivo .plist no aplicativo TextEdit da Apple para lê-lo como texto bruto ou pode abri-lo no IDE de desenvolvedor da Apple, Xcode – ou em quase qualquer outro aplicativo de editor de texto simples.

O Xcode possui um recurso de formatação especial que exibe um arquivo .plist como um editor de tabela com cada tipo de dados em uma linha contendo o tipo de dados e sua chave. Ao clicar em um menu pop-up próximo a cada item da tabela, você pode alterar seu tipo para qualquer tipo formatado conhecido.

Dados .plist de tipos genéricos, desconhecidos ou opacos são tratados como um blob de dados – ou no caso da plataforma Apple programando um tipo de dados de Data (em Swift), ou NSData em Objetivo-C.

Os aplicativos também agrupam arquivos .plist no macOS, iOS, iPadOS e watchOS para descrever aplicativos e armazenar conteúdo. O arquivo Info.plist, por exemplo, descreve cada aplicativo e seus recursos para o sistema operacional.

Existem APIs de sistema nos sistemas operacionais da Apple para transformar e serializar XML e .plists de e para outros formatos de dados.

Editando listas de propriedades

Conforme mencionado, você pode editar arquivos .plist diretamente abrindo-os em um editor de texto simples ou no Xcode.

Se você abrir um arquivo .plist no TextEdit, por exemplo, verá XML não formatado com tags. Para alterar os dados de um arquivo .plist em um editor de texto, você precisará entender as tags XML e como elas funcionam. As tags XML são muito semelhantes às tags HTML.

No Xcode você pode simplesmente abrir um arquivo .plist ou adicioná-lo a uma janela de projeto do Xcode e clicar uma vez nele no Navegador de Projetos à esquerda. Isso exibe o conteúdo do .plist no painel à direita:

Janela do Xcode exibindo um arquivo plist com informações de versão.

Editando um arquivo .plist no Xcode da Apple.

A janela acima mostra o arquivo version.plist para o aplicativo Chess da Apple: cada linha é um item de dados, as chaves para cada item são listadas na coluna da esquerda, cada tipo de dados é mostrado na coluna central e o valor de cada chave na coluna da esquerda. a direita.

Para alterar os dados de um arquivo .plist no Xcode, clique uma vez nos dados ou chave de uma linha e digite as novas informações ou clique no pequeno menu pop-up na coluna central da linha para alterar seu tipo. No menu pop-up, apenas os tipos de dados .plist permitidos e conhecidos são listados.

Depois de fazer todas as alterações desejadas, basta Arquivo->Salvar o arquivo .plist (ou pressione Comando-S no seu teclado).

Uma grande vantagem do XML é que você pode editar os arquivos em qualquer plataforma, salvá-los e copiá-los entre computadores sem precisar convertê-los. Programas localização geralmente é feito dessa maneira – com sequências de texto armazenadas em arquivos .strings para tradução entre idiomas. Arquivos de strings também contêm XML padrão usando pares chave/valor.

Os arquivos InfoPlist.strings agrupados em aplicativos contêm versões localizadas de strings encontradas nas informações descritivas para identificar um aplicativo. Este é o texto que aparece, por exemplo, quando você faz uma Arquivo->Obter Informações em um aplicativo no Finder.

Mais recentemente, um arquivo version.plist incluído em cada aplicativo pode conter informações de versão do aplicativo armazenadas em formato XML usando chaves Apple, como CFBundleVersion e CFBundleShortVersionString .

A Apple tem uma seção na documentação do desenvolvedor que discute listas de propriedades de informações.

O prefixo “CF” nas chaves .plist da Apple representa Fundação Central – uma API baseada em C usada para manipular tipos de dados básicos e .plists em plataformas Apple.

Arquivos Strings no desenvolvimento da plataforma Apple

No desenvolvimento da Apple, as strings geralmente são armazenadas em um arquivo .strings ou em uma tabela de strings para localização. Os desenvolvedores podem terceirizar seus arquivos de strings para localização para empresas de tradução, para que eles não tenham que fazer a tradução.

Se você olhar dentro do pacote (pasta) de um aplicativo, poderá ver vários arquivos .strings armazenados em pastas de idiomas, com cada pasta terminando em “.lproj” e com um prefixo de dois caracteres padrão ISO para o nome do país. Ao duplicar e alterar o conteúdo de cada versão dos arquivos de strings, os desenvolvedores podem adicionar novos idiomas às interfaces do aplicativo sem precisar conhecer os idiomas.

macOS e iOS são inteligentes o suficiente para carregar o arquivo ou tabela de strings localizada correta para o idioma atual em uso em um dispositivo Apple.

Ao usar strings e arquivos .plist separados, a interface do usuário de um aplicativo pode ser alterada em tempo de execução ou posteriormente – sem a necessidade de compilar o texto no código binário do aplicativo. Isso é conhecido como Carregamento Dinâmico.

É por isso que você pode alterar o idioma do sistema nas Configurações de um dispositivo Apple e fazer com que o mesmo aplicativo atualize o texto da interface do usuário para o novo idioma selecionado. Em sistemas operacionais mais antigos, os fornecedores tinham que enviar versões separadas de um aplicativo, específicas para cada idioma, para cada país ou idioma.

O carregamento dinâmico também reduz o consumo de memória de um aplicativo em tempo de execução, pois as strings não são carregadas na memória até serem realmente usadas.

Você pode aprender mais sobre formatos .plist e tipos de CF no Terminal digitando

Você pode aprender mais sobre formatos .plist e tipos de CF no Terminal digitando “man plist”.

Editando listas de propriedades no Terminal

O macOS inclui um aplicativo Terminal (shell) (UNIX) que permite emitir comandos na linha de comando para executar ações. Um dos usos mais poderosos do Terminal é o processamento em lote e a gravação de scripts para automatizar processos.

Muitos comandos do Terminal incluem um -r Sinalizador (recursivo) para informar ao comando para continuar processando todos os arquivos que encontrar em uma determinada pasta, não importa quão profundamente aninhados esses arquivos possam estar.

Você pode usar o Terminal para processar arquivos .plist e .strings manual e automaticamente para uma edição mais rápida.

Isso pode economizar tempo, por exemplo, se você tiver um lote de arquivos para vários idiomas e quiser substituir todos os seus valores por um novo texto localizado de tabelas de idiomas ou outras entradas. Ou você pode querer alterar todas as chaves de um determinado item em um lote de arquivos de uma só vez, sem precisar editar cada arquivo manualmente.

Não entraremos em automação de scripts de shell neste artigo, mas existem muitos bons livros e tutoriais on-line para escrever scripts de shell para processamento em lote.

OS X costumava vir em caixas

OS X costumava vir em caixas

Editando uma lista de propriedades no Terminal manualmente

Para editar um arquivo .plist no Terminal, use o integrado defaults comando. defaults permite editar e visualizar arquivos .plist, bem como definir configurações do sistema para arquivos .plist do sistema operacional conhecido usando nomes.

Para uso completo do defaults comandos, no tipo Terminal:

man defaults e pressione Retornar no seu teclado.

Para sair do sistema man no Terminal, pressione Controle-Z.

A principal opção para defaults alterar um valor em um arquivo .plist existente é o write opção seguida dos novos dados a serem gravados.

Como menciona a página de manual, os novos dados devem estar em um formato específico (geralmente outro .plist ou dicionário) e devem conter as chaves e valores a serem gravados. O formato desses dados deve ser exato, caso contrário o comando poderá falhar ou os dados do arquivo poderão ser corrompidos.

Por exemplo, a página man demonstra a alteração de uma matriz em um .plist que tem o nome “Cor padrão” para um novo valor de (255,0,0). Para fazer isso você usaria o comando:

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

Onde “appname” é o nome do aplicativo da empresa “companyname”.

Você também pode substituir valores existentes em um .plist por outro .plist. Por exemplo:

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

Neste exemplo, os novos dados .plist estão entre chaves e contêm dois pares chave/valor: “Cor padrão” e “Fonte padrão”.

Tenha cuidado ao gravar em arquivos de configurações existentes, pois se você corromper os dados em um arquivo .plist usado pelo macOS, seu Mac poderá parar de funcionar corretamente.

Existem também delete opções para defaultsmas esteja ciente delete é ainda mais perigoso do que write opção. Alguns dos delete opções destroem dados – e podem até excluir todos dados em um domínio com um único comando.

Você pode imprimir uma lista de todos os domínios no seu Mac usando o domains opção:

Você pode aprender mais sobre os formatos .plist no Terminal digitando

Você pode aprender mais sobre os formatos .plist no Terminal digitando “man plist”.

Editando um arquivo de lista de propriedades fora de um domínio de configurações

Para editar qualquer arquivo .plist arbitrário localizado em qualquer local gravável no sistema de arquivos, use o filepath opção. Isso permite que você edite um .plist da mesma forma que fez acima para arquivos de configurações, mas para qualquer arquivo .plist em qualquer caminho. filepath também trabalha com read comando.

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

lê o arquivo de configurações do aplicativo TextEdit localizado na pasta Biblioteca do usuário.

Mas o filepath opção funciona para qualquer Arquivo .plist – não apenas para arquivos de configurações ou arquivos pertencentes a aplicativos.

Escrevendo e combinando defaults comandos em um arquivo de script automatizado, você pode ver como seria fácil processar arquivos .plist em lote sem muito esforço.

Na verdade, muitos softwares Apple de terceiros são construídos desta forma: geralmente um engenheiro de construção escreve scripts de automação para recuperar uma base de código de um servidor, processa em lote arquivos .plist e strings localizados e, em seguida, executa compilações em todos os componentes de software. As compilações geralmente são pós-processadas usando outro conjunto de arquivos de script para montar o software final para lançamento.

O defaults O comando também tem opções para adicionar ou substituir tipos específicos de dados em um arquivo .plist.

O sistema padrão existe no macOS, Mac OS X e iOS há décadas e, na verdade, foi uma das tecnologias originais usadas no NeXTStep – o precursor da maioria dos sistemas operacionais da Apple hoje.

Depois de dominar o sistema de padrões, você o usará muito para inspecionar e alterar as configurações do macOS e para editar arquivos .plist. Apenas certifique-se de estar confortável e confiante ao fazer isso antes de usá-lo.

A Apple tem uma pequena seção no Guia do Usuário do Terminal que descreve como usar o sistema padrão para editar arquivos e configurações .plist.

Se você usa um computador Windows, confira as ferramentas de edição de XML muito legais feitas pela Altova.