stringtranslate.com

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

В классической системе Mac OS 7 и более поздних версиях, а также в macOS псевдоним это небольшой файл, который представляет другой объект в локальной, удаленной или съемной [1] файловой системе и обеспечивает динамическую ссылку на него; целевой объект можно переместить или переименовать, а псевдоним по-прежнему будет ссылаться на него (если исходный файл не будет воссоздан; такой псевдоним неоднозначен, и способ его разрешения зависит от версии macOS). В Windows аналогичную функцию выполняет «ярлык» — файл с расширением .lnk.

Она похожа на символическую ссылку Unix , но отличается тем, что работает, даже если целевой файл перемещается в другое место на том же диске (в этом случае она действует как жесткая ссылка , но источник и цель ссылки могут находиться на другом месте). разные файловые системы, а целью ссылки может быть каталог). Будучи потомком BSD , macOS также поддерживает символические (и жесткие) ссылки Unix.

Функция

Псевдоним действует как замена любому объекту в файловой системе, например документу , приложению , папке , жесткому диску , сетевому ресурсу , съемному носителю или принтеру . При двойном щелчке компьютер будет действовать так же, как если бы исходный файл был дважды щелкнут. Аналогично, выбор файла псевдонима в диалоговом окне «Открыть файл» приведет к открытию исходного файла. Цель псевдонима — помочь пользователю управлять большим количеством файлов, предоставляя альтернативные способы доступа к ним без необходимости копирования самих файлов. Хотя типичный псевдоним в классической Mac OS был небольшим, от 1 до 5 КБ, в macOS он может быть довольно большим, более 5 МБ (5000 КБ) для псевдонима папки.

Предотвращение сбоя псевдонима

Псевдоним — это динамическая ссылка на объект. Оригинал можно переместить в другое место в той же файловой системе , не разрывая ссылку. Операционная система хранит несколько фрагментов информации об оригинале в ответвлении ресурса файла псевдонима. Примеры информации, используемой для поиска оригинала:

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

В 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 (нет = 0)
  2. Размер записи 2 байта = короткая общая длина без знака
  3. Версия записи размером 2 байта = версия короткого целого числа (текущая версия = 2)
  4. 2-байтовый псевдоним вида = короткое целое значение (файл = 0; каталог = 1)
  5. Длина строки имени тома длиной 1 байт = длина беззнакового байта
  6. Строка имени тома длиной 27 байт (если строка имени тома < 27 символов, то дополняется нулями)
  7. Созданный том размером 4 байта Mac-дата = длинное беззнаковое значение в секундах с начала 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-дата = длинное беззнаковое значение в секундах с начала с 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;
  23. строковые данные = шестнадцатеричный дамп
  24. нечетные длины имеют поле нечетной длины длиной 1 байт = значение байта установлено в ноль

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

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

  1. Имя типа ресурса длиной 4 байта = длинная текстовая строка ASCII.
  2. 2-байтовый идентификатор ресурса = короткое целое значение
  3. 2-байтовая конечная площадка ресурса = короткое значение установлено в ноль

Код Java для пометки файла псевдонима

// Эта функция проверяет, соответствует ли файл магическому номеру псевдонима. public static boolean checkForMacAliasFile ( File inputFile ) выдает FileNotFoundException , IOException {         // Псевдонимами могут быть только файлы. // Не тестировать каталоги; они будут ложными. if ( inputFile . isFile ()) { байт [] закладка = новый байт [] { 0x62 , 0x6F , 0x6F , 0x6B , 0x00 , 0x00 , 0x00 , 0x00 , 0x6D , 0x61 , 0x72 , 0x6B , 0x00 , 0x00 , 0x00 , 0x00 }; длинная длина = входной файл . длина (); if ( длина > 16 ) { байт [] результат = новый байт [ 16 ] ; FileInputStream fis = новый FileInputStream ( inputFile ); фис . прочитать ( результат ); фис . закрывать (); вернуть массивы . равно ( результат , закладка ); } }                                                      вернуть ложь ; } 

Здесь есть репозиторий GitHub с рабочим кодом C++.

Управление псевдонимами

Пользовательский интерфейс

В Системе 7 единственным способом создать псевдоним было выбрать оригинал и выбрать «Создать псевдоним» в меню «Файл». Псевдоним с тем же именем и добавленным «псевдонимом» будет создан в той же папке. В более поздних версиях появилась возможность создавать псевдонимы путем перетаскивания , удерживая нажатой клавиши-модификаторы команд и опций.

В Mac OS 8.5 добавлена ​​возможность повторного подключения алиасов, которые были сломаны по той или иной причине (когда простые алгоритмы поиска не смогли найти надежную замену). Это было сделано путем выбора новой цели через стандартное диалоговое окно «Открыть файл».

В Mac OS 8.5 были добавлены параметры командыопция перетаскивания объекта в Finder для создания псевдонима в этом месте. Именно здесь в систему был добавлен псевдоним курсора . Курсор повторяет внешний вид курсора «Создать ярлык» в системах Windows.

Программирование API

API Alias ​​Manager является частью Carbon , которая позволяет разработчикам создавать псевдонимы и получать доступ к файлу с псевдонимом. [5]

Mac OS X 10.6 представила API закладок для Cocoa как набор методов NSURLи функций для CFURL. [6] [7] В Mac OS X 10.7.3 API был расширен для песочницы приложения с помощью закладок с ограниченной областью безопасности, которые добавляют разрешения безопасности к псевдонимам для каждого приложения или для каждого документа. [8]

В Mac OS X 10.8 API Alias ​​Manager был официально признан устаревшим в пользу API закладок. [5]

Связь с символическими и жесткими ссылками BSD

Unix и подобные операционные системы предоставляют две функции, очень похожие на псевдонимы macOS: символические ссылки и жесткие ссылки . При использовании macOS Finder ссылки отображаются и обрабатываются во многом как псевдонимы macOS и даже имеют идентичный атрибут «Вид». Однако при использовании командной строки оболочки псевдонимы macOS не распознаются: например, вы не можете использовать команду cd с именем файла псевдонима. Это связано с тем, что псевдоним реализуется как файл на диске, который должен интерпретироваться API, в то время как ссылки реализуются внутри файловой системы и, таким образом, функционируют на любом уровне ОС.

В настоящее время не существует предустановленной команды для разрешения псевдонима пути к файлу или каталогу, на который он ссылается. Однако свободно доступная программа на языке C использует API-интерфейсы Mac Carbon для выполнения этой задачи. [9] Учитывая это, такие команды, как cd, можно настроить для проверки псевдонимов и обработки их как символических или жестких ссылок.

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

  1. ^ «Глава 4 — Менеджер псевдонимов / О менеджере псевдонимов — Стратегии поиска» . Внутри Macintosh : Файлы . Архивировано из оригинала 7 октября 2008 года.
  2. ^ «Некоторая информация о псевдонимах MacOS, собранная из Интернета» . Архивировано из оригинала 20 января 2010 г.
  3. ^ «Почему файлы псевдонимов Finder в последнее время стали такими огромными?» Сообщества поддержки Apple . Архивировано из оригинала 07 мая 2021 г.
  4. ^ «Дополнительная информация, включая изменения в различных версиях Mac OS». Архивировано из оригинала 30 апреля 2013 г. Проверено 11 октября 2018 г.
  5. ^ ab «Менеджер псевдонимов». Документация разработчика Apple . Архивировано из оригинала 11 августа 2020 г.
  6. ^ «Примечания к выпуску NSURL и CFURL» . Справочная библиотека Mac OS X. 05.06.2008. Архивировано из оригинала 26 октября 2018 г.
  7. ^ «Руководство по программированию файловой системы» . Библиотека разработчиков Mac OS X. 06.06.2011. Архивировано из оригинала 6 октября 2011 г.
  8. ^ «Подробно о песочнице приложения» . Библиотека разработчиков Mac OS X. 13 сентября 2016 г. Архивировано из оригинала 11 июля 2012 г.
  9. ^ Дэвис, Тос. «getTrueName.c». Советы по Mac OS X. ИДГ. Архивировано из оригинала 13 ноября 2014 г. Проверено 24 октября 2016 г.

Внешние ссылки