Procura por arquivos que abrirão um determinado aplicativo no Mac OS X

1

No Mac OS X, quando você clica duas vezes em um nome de arquivo, esse arquivo será aberto com o aplicativo que criou o arquivo. Portanto, deve estar armazenado, em algum lugar na descrição do arquivo em um arquivo do Mac OS X, informações sobre qual aplicativo criou esse arquivo. Note que esta não é a extensão do arquivo, o arquivo pode ter qualquer extensão ou nenhuma extensão.

Duas perguntas sobre essa informação:

(1) Como posso procurar todos os arquivos que abrirão uma aplicação específica?

(2) Como posso ver e alterar o aplicativo que um determinado arquivo será aberto?

    
por Jacob Palme 23.06.2012 / 19:09

2 respostas

2

O aplicativo com o qual um arquivo será aberto é identificado pelo Item Kind . Por exemplo, um "documento de texto simples" será aberto com o TextMate, enquanto um "documento de texto do TextWrangler" será aberto com o TextWrangler. Os próprios aplicativos são responsáveis por fornecer esses tipos de itens e são atribuídos aos arquivos, o que permitirá que o OS X selecione o aplicativo para abri-los.

Você pode verificar essas informações em arquivos únicos com mdls :

mdls -name kMDItemKind -raw some-file.txt

Então, para procurar por todos os arquivos que serão abertos com o TextMate, procure por eles com o Tipo de Item :

mdfind 'kMDItemKind == "Plain text document"'

Você também pode restringir essa pesquisa a uma determinada pasta:

mdfind -onlyin /some/folder 'kMDItemKind == "Plain text document"'

Agora, como você descobre essas strings "Item Kind" que os aplicativos fornecem?

Vá até o arquivo do aplicativo em que você está interessado e clique com o botão direito nele. Selecione Mostrar Conteúdo do Pacote… e navegue até Conteúdo / Recursos . Abra o Info.plist .

Aqui, você encontrará os tipos de documentos que o aplicativo pode manipular, incluindo o Nome do tipo de documento , que é exatamente o que você pode pesquisar com mdfind .

HowcanIsee,andchange,theapplicationwhichacertainfilewillopen?

Selecioneoarquivo,cliquecomobotãodireitoecliqueemObterInformações.AltereoaplicativolistadoemAbrircom:

Outro aplicativo útil para manter aplicativos e associações padrão é o RCDefaultApp .

    
por 23.06.2012 / 20:09
2

Se você alterar a associação do programa para um único arquivo, ele será armazenado em um atributo estendido denominado com.apple.ResourceFork (AFAICT, sempre no deslocamento 0x108 ) e poderá ser acessado na linha de comando usando xattr .

Atributos estendidos de arquivos podem ser listados usando ls -l@ na linha de comando:

$ ls -la@ test.png 
-rw-r--r--@ 1 danielbeck  staff  23580 23 Jun 20:26 test.png
    com.apple.FinderInfo       32 
    com.apple.ResourceFork   1338 
    com.apple.metadata:kMDItemIsScreenCapture      42 
    com.apple.metadata:kMDItemScreenCaptureType    51 

Para o exemplo, eu selecionei explicitamente Preview como o aplicativo para abrir o arquivo em sua janela Obter Informações .

$ xattr -p -l com.apple.ResourceFork test.png 
com.apple.ResourceFork:
00000000  00 00 01 00 00 00 05 08 00 00 04 08 00 00 00 32  |...............2|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000050  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000060  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000070  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000080  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000090  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000100  00 00 04 04 00 00 00 1A 2F 41 70 70 6C 69 63 61  |......../Applica|
00000110  74 69 6F 6E 73 2F 50 72 65 76 69 65 77 2E 61 70  |tions/Preview.ap|
00000120  70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |p...............|
[snip]

As versões mais antigas do OS X suportavam o uso do código do criador para determinar o aplicativo para abrir um arquivo específico. Alguns aplicativos ainda os gravam e podem ser acessados examinando os metadados do Spotlight de um arquivo usando mdls . No exemplo, estou inspecionando um arquivo .pxm criado pelo Pixelmator.

$ mdls test.pxm 
kMDItemAlternateNames          = (
    "test.pxm"
)
kMDItemContentCreationDate     = 2012-06-23 18:23:04 +0000
kMDItemContentModificationDate = 2012-06-23 18:24:12 +0000
kMDItemContentType             = "com.pixelmator.pxm"
kMDItemContentTypeTree         = (
    "com.pixelmator.pxm",
    "public.image",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemDateAdded               = 2012-06-23 18:23:04 +0000
kMDItemDisplayName             = "test"
kMDItemFSContentChangeDate     = 2012-06-23 18:24:12 +0000
kMDItemFSCreationDate          = 2012-06-23 18:23:04 +0000
kMDItemFSCreatorCode           = "PXMT"
[...]

A última linha da saída de amostra mostra o código do criador definido pelo Pixelmator: PXMT .

    
por 23.06.2012 / 20:29

Tags