Псевдоним (Mac OS) - Alias (Mac OS)

Псевдоним 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 байт и состоит из полей, показанных ниже (все целые числа имеют обратный порядок байтов). Однако файлы псевдонимов намного больше, чем можно было бы объяснить, и включают другую информацию, по крайней мере, включая значки.

  1. 4 байта имя типа пользователя / код создателя приложения = длинная текстовая строка ASCII (none = 0)
  2. Размер записи 2 байта = короткая общая длина без знака
  3. Версия записи 2 байта = короткая целочисленная версия (текущая версия = 2)
  4. 2 байта псевдоним kind = короткое целочисленное значение (файл = 0; каталог = 1)
  5. 1 байт длина строки имени тома = длина байта без знака
  6. Строка имени тома 27 байт (если строка имени тома <27 символов, заполните нулями)
  7. Созданный объем объемом 4 байта mac date = длинное беззнаковое значение в секундах с начала 1904 по 2040 год
  8. 2-байтовая подпись тома = короткое беззнаковое значение HFS
  9. Тип тома 2 байта = короткое целое число mac os (типы: фиксированный HD = 0; сетевой диск = 1; 400 КБ FD = 2; 800 КБ FD = 3; 1,4 МБ FD = 4; другие извлекаемые носители = 5)
  10. 4 байта идентификатор родительского каталога = длинное беззнаковое значение HFS
  11. 1 байт длина строки имени файла = длина байта без знака
  12. 63 байта строка имени файла (если строка имени файла <63 символа, заполните нулями)
  13. 4 байта номер файла = длинное беззнаковое значение HFS
  14. Файл размером 4 байта создан mac date = длинное беззнаковое значение в секундах с начала 1904 по 2040 год
  15. 4 байта имя типа файла = длинная текстовая строка ASCII
  16. Имя создателя файла 4 байта = длинная текстовая строка ASCII
  17. 2 байта nlvl From (каталоги от псевдонима до корневого) = короткий целочисленный диапазон
  18. 2 байта nlvl To (каталоги от корня до источника) = короткий целочисленный диапазон (если псевдоним на другом томе, установите выше на -1)
  19. Атрибуты тома 4 байта = длинные шестнадцатеричные флаги
  20. Идентификатор файловой системы тома 2 байта = короткое целое значение HFS
  21. 10 байт зарезервировано = 80-битное значение установлено на ноль
  22. 4+ байта, необязательные дополнительные строки данных = короткий целочисленный тип + короткая длина строки без знака (типы: конец расширенной информации = -1; имя каталога = 0; идентификаторы каталога = 1; абсолютный путь = 2; имя зоны AppleShare = 3; имя сервера AppleShare = 4; Имя пользователя AppleShare = 5; Имя драйвера = 6; Обновленная информация AppleShare = 9; Информация о коммутируемом доступе AppleRemoteAccess = 10)
  23. строковые данные = шестнадцатеричный дамп
  24. Нечетные длины имеют 1 байтовую длину нечетной строки pad = значение байта установлено на ноль

Структура записи псевдонима за пределами размера

Следующее предназначено для использования с диспетчером ресурсов псевдонима Apple.

  1. 4 байта имя типа ресурса = длинная текстовая строка ASCII
  2. 2 байта ID ресурса = короткое целочисленное значение
  3. 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, могут быть настроены для проверки псевдонимов и обработки их как символических или жестких ссылок.

Рекомендации

внешняя ссылка