Псевдоним (Mac OS) - Alias (Mac OS)
Типовой код | Алис |
---|---|
Единый идентификатор типа (UTI) | com.apple.alias-файл |
Магическое число | 'book\0\0\0\0mark\0\0\0\0' |
Разработан | Apple, Inc. |
Тип формата | ярлык |
В классической Mac OS System 7 и более поздних версий, и в MacOS , псевдоним представляет собой небольшой файл , который представляет собой еще один объект в локальном, удаленных, или съемной файловой системы и обеспечивает связь динамичную к нему; целевой объект может быть перемещен или переименован, и псевдоним по-прежнему будет ссылаться на него (если исходный файл не будет воссоздан заново; такой псевдоним неоднозначен, и то, как он разрешается, зависит от версии macOS). В Windows «ярлык» , файл с расширением .lnk, выполняет аналогичную функцию.
Он похож на символическую ссылку Unix , но с той разницей, что работает, даже если целевой файл перемещается в другое место на том же диске (в этом случае он действует как жесткая ссылка , но источник и цель ссылки могут быть на различные файловые системы, и целью ссылки может быть каталог). Как потомок BSD , macOS также поддерживает символические (и жесткие) ссылки Unix.
Функция
Псевдоним действует как заместитель для любого объекта в файловой системе, такого как документ , приложение , папка , жесткий диск , сетевой ресурс, съемный носитель или принтер . При двойном щелчке компьютер будет действовать так же, как если бы исходный файл был дважды нажат. Аналогично, выбор файла псевдонима в диалоговом окне « Открыть файл» откроет исходный файл. Назначение псевдонима - помочь пользователю управлять большим количеством файлов, предоставляя альтернативные способы доступа к ним без необходимости копировать сами файлы. В то время как типичный псевдоним в классической Mac OS был небольшим, от 1 до 5 КБ, в macOS он может быть довольно большим, более 5 МБ (5000 КБ) для псевдонима папки.
Предотвращение сбоя псевдонима
Псевдоним - это динамическая ссылка на объект. Оригинал можно переместить в другое место в той же файловой системе , не разрывая ссылку. В операционной системе хранит несколько частей информации о подлинном экземпляре на ресурс вилке файла псевдонимов. Примеры информации, используемой для поиска оригинала:
- дорожка
- идентификатор файла (номер 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 байт и состоит из полей, показанных ниже (все целые числа имеют обратный порядок байтов). Однако файлы псевдонимов намного больше, чем можно было бы объяснить, и включают другую информацию, по крайней мере, включая значки.
- 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+ байта, необязательные дополнительные строки данных = короткий целочисленный тип + короткая длина строки без знака (типы: конец расширенной информации = -1; имя каталога = 0; идентификаторы каталога = 1; абсолютный путь = 2; имя зоны AppleShare = 3; имя сервера AppleShare = 4; Имя пользователя AppleShare = 5; Имя драйвера = 6; Обновленная информация AppleShare = 9; Информация о коммутируемом доступе AppleRemoteAccess = 10)
- строковые данные = шестнадцатеричный дамп
- Нечетные длины имеют 1 байтовую длину нечетной строки pad = значение байта установлено на ноль
Структура записи псевдонима за пределами размера
Следующее предназначено для использования с диспетчером ресурсов псевдонима Apple.
- 4 байта имя типа ресурса = длинная текстовая строка ASCII
- 2 байта ID ресурса = короткое целочисленное значение
- 2 байта конца ресурса = короткое значение установлено на ноль
Код Java для пометки файла псевдонима
// This function checks whether a file matches the alias magic number.
public static boolean checkForMacAliasFile(File inputFile) throws FileNotFoundException, IOException {
// Only files can be aliases.
// Do not test directories; they will be false.
if (inputFile.isFile()) {
byte[] bookmark = new byte[] {
0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00
};
long length = inputFile.length();
if (length > 16) {
byte[] result = new byte[16];
FileInputStream fis = new FileInputStream(inputFile);
fis.read(result);
fis.close();
return Arrays.equals(result, bookmark);
}
}
return false;
}
Здесь есть репозиторий github с рабочим кодом C ++ .
Управление псевдонимами
Пользовательский интерфейс
В Системе 7 единственным способом создания псевдонима было выбрать оригинал и выбрать «Создать псевдоним» в меню «Файл». Затем в той же папке будет создан псевдоним с таким же именем и добавленным «псевдонимом». В более поздних версиях стало возможным создавать псевдонимы путем перетаскивания , удерживая нажатыми клавиши-модификаторы команд и параметров.
В Mac OS 8.5 добавлена функция повторного подключения псевдонимов, которые были сломаны по той или иной причине (когда простые алгоритмы поиска не смогли найти надежную замену). Это было сделано путем выбора новой цели в стандартном диалоговом окне «Открыть файл».
В Mac OS 8.5 были добавлены параметры для команды - параметр перетаскивания объекта в Finder для создания псевдонима в этом месте. Здесь в систему был добавлен курсор-псевдоним . Курсор отражает внешний вид курсора «создать ярлык» в системах Windows.
API программирования
API Alias Manager является частью Carbon . Неизвестно, присутствовал ли он в Mac OS Classic.
Mac OS X 10.6 представила некоторые API-интерфейсы, связанные с псевдонимами, для Cocoa как часть NSURL
.
Отношение к символическим и жестким ссылкам BSD
Unix и аналогичные операционные системы предоставляют 2 функции, очень похожие на псевдонимы macOS: символические ссылки и жесткие ссылки . При использовании MacOS Finder ссылки отображаются и обрабатываются в основном как псевдонимы macOS и даже несут идентичный атрибут «Kind». Однако при использовании командной строки оболочки псевдонимы macOS не распознаются: например, вы не можете использовать команду cd с именем файла псевдонима. Это связано с тем, что псевдоним реализован как файл на диске, который должен интерпретироваться API, в то время как ссылки реализуются в файловой системе и, таким образом, работают на любом уровне ОС.
В настоящее время нет предустановленной команды для разрешения псевдонима пути к файлу или каталогу, на который он ссылается. Однако свободно распространяемая программа на C использует API Mac Carbon для выполнения этой задачи. Учитывая это, такие команды, как cd, могут быть настроены для проверки псевдонимов и обработки их как символических или жестких ссылок.
Рекомендации
внешняя ссылка
- Псевдонимы Системы 7 - статья о псевдонимах Системы 7, с 1992 г.