Продолжая ответ Дэниела Бека, приведенный выше, эта информация действительно хранится в ветке ресурсов файла. Apple предоставляет две утилиты, называемые "Rez" и "DeRez" с инструментами разработчика, которые позволяют вам манипулировать ресурсами. В частности, вы можете вставить ветку ресурса в файл с помощью Rez.
Чтобы изменить связь одного файла из командной строки, сначала создайте файл правильного типа и вручную измените его связь с приложением, в котором вы хотите его открыть. Это создает ветку ресурса в файле - если вы этого не сделаете, не будет никакой информации для копирования. Затем извлеките ветвь ресурса с помощью DeRez, например, так (при условии, что файл foo.txt и приложение, которое вы хотите использовать, - это Firefox.app).
DeRez foo.txt > foo.r
Это создаст файл с именем foo.r, который является декомпилированной ветвью ресурса в виде текстового файла. Это будет выглядеть примерно так:
data 'usro' (0) {
$"0000 001A 2F41 7070 6C69 6361 7469 6F6E" /* ..../Application */
$"732F 4669 7265 666F 782E 6170 7000 0000" /* s/Firefox.app... */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
Вы можете редактировать это, если вы хотите создать его с нуля, но вы должны получить правильный формат , иначе он не будет работать. Это просто шестнадцатеричные символы, описывающие путь к нужному комплекту приложений, заканчивающийся нулем.
Может появиться сообщение о том, что ветка ресурса пуста и не инициализирована. Если это так, вы не изменили привязку к файлу исходного файла, поэтому вам нужно сделать это, а затем повторно запустить команду DeRez.
После этого вы можете вставить это в другой файл следующим образом (при условии, что bar.txt существует):
Rez foo.r -a -o bar.txt
Это обновляет bar.txt на месте с помощью ветки ресурса от foo.r.
Чтобы убедиться, что все работает нормально, поскольку Rez и DeRez не выводят сообщения об ошибках, просто сделайте это:
DeRez bar.txt
Вы должны увидеть ту же информацию, что и раньше. После всего этого просто откройте файл bar.txt, как обычно, и он должен открыться в правильном приложении, а не в приложении по умолчанию.
Чтобы выполнить пакетное изменение, когда у вас есть файл .r, вы можете использовать стандартное расширение с подстановочными знаками, например:
Rez foo.r -a -o *.txt
Это будет делать все файлы, которые соответствуют шаблону.
Я сделал это на 10.7, но я понимаю, что это работает и на более ранних машинах.