Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

В классическом 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]

  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+ байта, необязательные дополнительные строки данных = короткий целочисленный тип + короткая длина строки без знака (типы: 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)
  23. строковые данные = шестнадцатеричный дамп
  24. Нечетные длины имеют 1 байт нечетной длины строки pad = значение байта установлено на ноль

Структура записи псевдонима превышает размер [ править ]

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

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

Ссылки [ править ]

  1. ^ Файлы: Глава 4 - Диспетчер псевдонимов; Стратегии поиска -документация для разработчиков на Macintosh
  2. ^ Некоторая информация о псевдонимах MacOS, собранная из Интернета. (обратная инженерия)
  3. ^ Обсуждение на форуме большого размера псевдонимов.
  4. ^ «Дополнительная информация, включая изменения в различных версиях Mac OS» . Архивировано из оригинала на 2013-04-30 . Проверено 11 октября 2018 .
  5. ^ «Диспетчер псевдонимов» . Документация для разработчиков Apple .
  6. ^ https://github.com/nathanday/ndalias/issues/3
  7. ^ Дэвис, Thos. "getTrueName.c" . Mac OS X подсказки . IDG . Проверено 24 октября 2016 года .

Внешние ссылки [ править ]

  • Псевдонимы Системы 7 - Статья о псевдонимах Системы 7, с 1992 г.