Эта статья требует дополнительных ссылок для проверки . ( май 2010 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Эта статья включает в себя список общих ссылок , но он остается в значительной степени непроверенным, поскольку в нем отсутствует достаточное количество соответствующих встроенных ссылок . ( Апрель 2009 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Типовой код | Алис |
---|---|
Единый идентификатор типа (UTI) | com.apple.alias-файл |
Магическое число | 'book\0\0\0\0mark\0\0\0\0' |
Разработан | Apple, Inc. |
Тип формата | ярлык |
В классическом Mac OS System 7 и более поздних версии, и в MacOS , псевдоним представляет собой небольшой файл , который представляет собой еще один объект в локальной, удаленной или съемной [1] файловой системе и обеспечивает связь динамичной к нему; целевой объект может быть перемещен или переименован, и псевдоним все равно будет ссылаться на него (если исходный файл не будет воссоздан заново; такой псевдоним неоднозначен, и то, как он разрешается, зависит от версии macOS). В Windows аналогичные функции выполняет «ярлык» - файл с расширением .lnk.
Он похож на символическую ссылку Unix , но с той разницей, что работает, даже если целевой файл перемещается в другое место на том же диске (в этом случае он действует как жесткая ссылка , но источник и цель ссылки могут быть на различные файловые системы, и целью ссылки может быть каталог). Как потомок BSD , macOS также поддерживает символические (и жесткие) ссылки Unix.
Функция [ править ]
Псевдоним действует как заместитель для любого объекта в файловой системе, такого как документ , приложение , папка , жесткий диск , общий сетевой ресурс, съемный носитель или принтер . При двойном щелчке компьютер будет действовать так же, как если бы исходный файл был дважды нажат. Аналогичным образом, выбор файла псевдонима в диалоговом окне « Открыть файл»откроет исходный файл. Назначение псевдонима - помочь пользователю управлять большим количеством файлов, предоставляя альтернативные способы доступа к ним без необходимости копировать сами файлы. В то время как типичный псевдоним в классической Mac OS был небольшим, от 1 до 5 КБ, в macOS он может быть довольно большим, более 5 МБ (5000 КБ) для псевдонима папки.
Предотвращение сбоя псевдонима [ править ]
Псевдоним - это динамическая ссылка на объект. Оригинал можно переместить в другое место в той же файловой системе , не разрывая ссылку. В операционной системе хранит несколько частей информации о подлинном экземпляре на ресурс вилке файла псевдонимов. Примеры информации, используемой для поиска оригинала:
- путь
- ID файла (номер inode)
- ID каталога (номер inode)
- имя
- размер файла
Поскольку любое из этих свойств может изменяться без ведома компьютера, в результате действий пользователя используются различные алгоритмы поиска для поиска наиболее вероятной цели. Эта отказоустойчивость отличает псевдоним от аналогичных функций в некоторых других операционных системах, таких как символическая ссылка Unix или ярлык Microsoft Windows , за счет увеличения сложности и непредсказуемости. Например, приложение может быть перемещено из одного каталога в другой в той же файловой системе, но существующий псевдоним все равно запускает то же приложение при двойном щелчке.
Может возникнуть вопрос, как должен работать псевдоним, если файл перемещается, а затем создается файл с тем же именем, что и исходный перемещенный файл, поскольку псевдоним может использоваться для определения местоположения как исходного имени, так и нового местоположения исходный файл. С символическими ссылками ссылка однозначна (мягкие ссылки относятся к новому файлу, жесткие ссылки - к оригиналу). Однако до Mac OS X 10.2 такой неоднозначный псевдоним постоянно находил исходный перемещенный файл, а не воссозданный файл. В Mac OS X 10.2 и более поздних версиях новый файл находится в соответствии с поведением символических ссылок [1] . При необходимости приложения macOS могут программно использовать старое поведение.
Псевдонимы похожи на операции теней в графическом Workplace Shell в OS / 2 операционной системы.
Отличительные знаки [ править ]
В системах с 7 по Mac OS 9 псевдонимы визуально выделялись для пользователя тем, что их имена файлов были выделены курсивом. Для поддержки языков без курсива (например, японского ) в Mac OS 8.5 был добавлен еще один отличительный знак - значок со «стрелкой-псевдонимом» - черной стрелкой с небольшой белой рамкой - аналогичной той, которая используется для ярлыков в Microsoft. Windows.
В macOS имена файлов псевдонимов не выделяются курсивом, но значок стрелки остается.
Файловая структура [ править ]
Файлы псевдонимов в macOS начинаются с магического числа 62 6F 6F 6B 00 00 00 00 6D 61 72 6B 00 00 00 00
в ASCII book␀␀␀␀mark␀␀␀␀
( ␀ представляет собой нулевой символ ).
После магического числа сообщалось, что в псевдониме есть набор записей внутри, каждая запись имеет длину 150 байт и состоит из полей, показанных ниже (все целые числа с прямым порядком байтов). [2] Однако файлы псевдонимов намного больше, чем это можно было бы объяснить, и включают другую информацию, по крайней мере, включая значки. [3] [4]
- 4 байта имя типа пользователя / код создателя приложения = длинная текстовая строка ASCII (none = 0)
- Размер записи 2 байта = короткая общая длина без знака
- Версия записи 2 байта = короткая целочисленная версия (текущая версия = 2)
- 2 байта псевдоним kind = короткое целочисленное значение (файл = 0; каталог = 1)
- 1 байт длина строки имени тома = длина байта без знака
- 27-байтовая строка имени тома (если строка имени тома <27 символов, заполните нулями)
- Созданный объем объемом 4 байта mac date = длинное беззнаковое значение в секундах с начала 1904 по 2040 год
- 2-байтовая подпись тома = короткое беззнаковое значение HFS
- Тип тома 2 байта = короткое целое число mac os (типы: фиксированный HD = 0; сетевой диск = 1; 400 КБ FD = 2; 800 КБ FD = 3; 1,4 МБ FD = 4; другие извлекаемые носители = 5)
- 4 байта идентификатор родительского каталога = длинное беззнаковое значение HFS
- 1 байт длина строки имени файла = длина байта без знака
- 63 байта строки имени файла (если строка имени файла <63 символа, заполните нулями)
- 4 байта номер файла = длинное беззнаковое значение HFS
- Файл размером 4 байта создан mac date = длинное беззнаковое значение в секундах с начала 1904 по 2040 год
- 4 байта имя типа файла = длинная текстовая строка ASCII
- Имя создателя файла 4 байта = длинная текстовая строка ASCII
- 2 байта nlvl From (каталоги от псевдонима до корня) = короткий целочисленный диапазон
- 2 байта nlvl To (каталоги от корня до источника) = короткий целочисленный диапазон (если псевдоним на другом томе, установите выше на -1)
- 4-байтовые атрибуты тома = длинные шестнадцатеричные флаги
- Идентификатор файловой системы тома 2 байта = короткое целое значение HFS
- 10 байт зарезервировано = 80-битное значение установлено на ноль
- 4+ байта, необязательные дополнительные строки данных = короткий целочисленный тип + короткая длина строки без знака (типы: Extended Info End = -1; Directory Name = 0; Directory IDs = 1; Absolute Path = 2; AppleShare Zone Name = 3; AppleShare Server Name = 4; Имя пользователя AppleShare = 5; Имя драйвера = 6; Обновленная информация AppleShare = 9; Информация о коммутируемом доступе AppleRemoteAccess = 10)
- строковые данные = шестнадцатеричный дамп
- Нечетные длины имеют 1 байт нечетной длины строки pad = значение байта установлено на ноль
Структура записи псевдонима превышает размер [ править ]
Следующее предназначено для использования с диспетчером ресурсов псевдонима Apple.
- 4 байта имя типа ресурса = длинная текстовая строка ASCII
- 2 байта ID ресурса = короткое целочисленное значение
- 2 байта конца ресурса = короткое значение, установленное на ноль
Код Java для пометки файла псевдонима
// Эта функция проверяет, соответствует ли файл магическому номеру псевдонима. общедоступное статическое логическое значение checkForMacAliasFile ( файл inputFile ) выбрасывает FileNotFoundException , IOException { // Только файлы могут быть псевдонимами. // Не проверять каталоги; они будут ложными. if ( inputFile . isFile ()) { byte [] bookmark = new byte [] { 0x62 , 0x6F , 0x6F , 0x6B , 0x00 , 0x00 , 0x00 , 0x00 , 0x6D , 0x61 , 0x72 , 0x6B , 0x00 , 0x00 , 0x00 , 0x00 }; длинная длина = входной файл . длина (); если ( длина > 16 ) { байт [] результат = новый байт [ 16 ] ; FileInputStream fis = новый FileInputStream ( inputFile ); fis . читать ( результат ); fis . закрыть (); вернуть массивы . равно ( результат , закладка ); } } вернуть ложь ; }
Здесь есть репозиторий github с рабочим кодом C ++ .
Управление псевдонимами [ править ]
Пользовательский интерфейс [ править ]
В Системе 7 единственный способ создать псевдоним - это выбрать оригинал и выбрать «Создать псевдоним» в меню «Файл». Затем в той же папке будет создан псевдоним с тем же именем и добавленным «псевдонимом». В более поздних версиях стало возможно создавать псевдонимы путем перетаскивания , удерживая нажатыми клавиши-модификаторы команд и параметров.
В Mac OS 8.5 добавлена функция повторного подключения псевдонимов, которые были сломаны по той или иной причине (когда простые алгоритмы поиска не смогли найти надежную замену). Это было сделано путем выбора новой цели в стандартном диалоговом окне «Открыть файл».
В Mac OS 8.5 были добавлены параметры для команды - параметр перетаскивания объекта в Finder для создания псевдонима в этом месте. Здесь в систему был добавлен курсор-псевдоним . Курсор отражает внешний вид курсора «создать ярлык» в системах Windows.
API программирования [ править ]
API-интерфейс Alias Manager является частью Carbon . Неизвестно, присутствовал ли он в Mac OS Classic. [5]
Mac OS X 10.6 представила некоторые API-интерфейсы, связанные с псевдонимами, для Cocoa как часть NSURL
. [6]
Связь с символическими и жесткими ссылками BSD [ править ]
Unix и аналогичные операционные системы предоставляют 2 функции, очень похожие на псевдонимы macOS: символические ссылки и жесткие ссылки . При использовании macOS Finder ссылки отображаются и обрабатываются в основном как псевдонимы macOS и даже несут идентичный атрибут «Kind». Однако при использовании командной строки оболочки псевдонимы macOS не распознаются: например, вы не можете использовать команду cd с именем файла псевдонима. Это связано с тем, что псевдоним реализован как файл на диске, который должен интерпретироваться API, в то время как ссылки реализованы в файловой системе и, таким образом, функционируют на любом уровне ОС.
В настоящее время нет предустановленной команды для разрешения псевдонима пути к файлу или каталогу, на который он ссылается. Однако свободно распространяемая программа на C использует API Mac Carbon для выполнения этой задачи. [7] Учитывая это, такие команды, как cd, могут быть настроены для проверки псевдонимов и обработки их как символьных или жестких ссылок.
Ссылки [ править ]
- ^ Файлы: Глава 4 - Диспетчер псевдонимов; Стратегии поиска -документация для разработчиков на Macintosh
- ^ Некоторая информация о псевдонимах MacOS, собранная из Интернета. (обратная инженерия)
- ^ Обсуждение на форуме большого размера псевдонимов.
- ^ «Дополнительная информация, включая изменения в различных версиях Mac OS» . Архивировано из оригинала на 2013-04-30 . Проверено 11 октября 2018 .
- ^ «Диспетчер псевдонимов» . Документация для разработчиков Apple .
- ^ https://github.com/nathanday/ndalias/issues/3
- ^ Дэвис, Thos. "getTrueName.c" . Mac OS X подсказки . IDG . Проверено 24 октября 2016 года .
Внешние ссылки [ править ]
- Псевдонимы Системы 7 - Статья о псевдонимах Системы 7, с 1992 г.