Як зберігає теги Mavericks's Finder?


13

Я ще не використовував Mavericks.
Чи шукає тег Finder у самому файлі (наприклад: xmp), чи він працює на базі якоїсь бази даних? або те, що?


Ви можете спробувати його, перш ніж задавати питання про OS X Maverick.
Рамхаунд

Зауважте, що підхід Mavericks до тегів у файловій системі не обмежувався Finder.
Грем Перрін

Відповіді:


12

Mavericks зберігає теги як розширений атрибут

Тепер, коли NDA скасовано: Mavericks зберігає теги як розширений атрибут , в com.apple.metadata:_kMDItemUserTags. Ви можете перевірити їх самостійно, скориставшись такою командою mdls :

mdls -name kMDItemUserTags Привіт

Епічний огляд Джона Сіракузи OS X 10.9 докладно описує архітектуру тегів .


3
І як зберігаються розширені атрибути?
окулус

1

Теги зберігаються в розширеному атрибуті з назвою com.apple.metadata: _kMDItemUserTags. Його значення - це бінарний список властивостей, який містить єдиний масив рядків:

$ xattr -p com.apple.metadata:_kMDItemUserTags file3|xxd -r -p|plutil -convert xml1 - -o -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>Red
6</string>
    <string>aa</string>
    <string>Orange
7</string>
    <string>Yellow
5</string>
    <string>Green
2</string>
    <string>Blue
4</string>
    <string>Purple
3</string>
    <string>Gray
1</string>
</array>
</plist>

Теги для кольорів мають такі значення, як Red\n6(де \nє стрічковий канал).

Ви можете використовувати xattr для копіювання тегів з одного файлу в інший:

xattr -wx com.apple.metadata:_kMDItemUserTags "$(xattr -px com.apple.metadata:_kMDItemUserTags file1)" file2
xattr -wx com.apple.FinderInfo "$(xattr -px com.apple.FinderInfo file1)" file2

Якщо прапор kColor у com.apple.FinderInfo не встановлений, Finder не показує кола для кольорів поруч із файлами. Якщо для прапора kColor встановлено помаранчевий колір, а файл має червоний тег, Finder показує червоні та оранжеві кола. Ви можете встановити прапор kColor за допомогою AppleScript:

xattr -w com.apple.metadata:_kMDItemUserTags '("Red\n6","new tag")' ~/desktop/file4"
osascript -e 'tell application "Finder" to set label index of file "file4" of desktop to item 1 of {2, 1, 3, 6, 4, 5, 7}'

'("Red\n6","new tag")' це синтаксис плістів старого стилю для цього:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>Red
6</string>
    <string>new tag</string>
</array>
</plist>

xattr -p com.apple.FinderInfo file|head -n1|cut -c28-29друкує значення бітів, використаних для прапора kColor. Червоний - це C, помаранчевий - E, жовтий - A, зелений - 4, синій - 8, пурпурний - 6, а сірий - 2. Прапор, який додав би значення 1, не використовується в OS X.


1
Якщо я створюю тег під назвою "Фінансовий", кольоровий червоний, наприклад, чи розширений атрибут списку магазинів "Фінансовий" чи "Червоний"? І як робиться відображення між назвою та кольором?
Ваддаді Картік

"Прапор, який додав би значення 1, не використовується в OS X." Що це означає?
Ніколя Барбулеско

Ця відповідь детальна. Але різниця між кольорами та тегами незрозуміла.
Ніколя Барбулеско

І де зберігається цей розширений атрибут?
Ніколя Барбулеско

1

Наскільки я міг прочитати в Інтернеті з кількох джерел, дуже ймовірно, що Mavericks зберігатиме інформацію тегів як щось дійсно близьке до стратегії OpenMeta у самому файлі. До цих пір у нас уже були теги, і у нас було кілька додатків, які допомагають, наприклад, у подібному Leap / Yep. Але це була лише найкраща практика, консолідована вище стандартного нижнього шару -OpenMeta. Тепер Mavericks хоче зробити крок далі, зробивши теги (і те, як вони повинні бути закодовані у файловій системі) офіційними. Плюс теги матимуть фіксований набір кольорів (7?), І це може додатково допомогти розбиванню тегів на набори, що мають додаткову смисловість. Багато хто з нас думає, що це може бути величезним кроком вперед у баченні файлової системи великого лідера галузі, щоб врешті-решт зробити майбутній вибір (додатки будуть значно більше покладатися на це, і, можливо, сам Mac очікує деяких спеціальних системних приміток). Для деталей OpenMeta хоче, щоб метадані були описані як xattr (розширені атрибути) файлів, так що це сама файлова система не піклується через те, що вона вийшла за межі своєї сфери.

Питання було насправді досить старим, і Mavericks збирається повернути GM справді незабаром .. Тож незважаючи на те, що є лише інформація, що стосується домену Beta, це справедливо все, що я говорив вище. В Інтернеті проходить декілька обговорень на цю тему, зокрема, тут:

https://groups.google.com/d/msg/openmeta/DK4Of2QGkpM/KIK9VKaCQdkJ

Найцікавіша частина:

Теги Apple реалізовані так само, як і теги OpenMeta - як розширені атрибути, приєднані до файлів у файловій системі. Єдина відмінність полягає в тому, що ім'я атрибута _kMDItemUserTags замість kMDItemOMUserTags ("OM" в останньому тезі призначено для "OpenMeta"). Дані тегів як для тегів Mavericks, так і для тегів OpenMeta - це списки властивостей, але я не переглядав внутрішній формат списків, тому не знаю, чи точно вони однакові чи ні. Я також не знаю, що, якщо такі є, допоміжні сховища або альтернативні методи використовуються для форматів диска, що не HFS + - я знаю, що в рекламі Apple сказали, що ви можете також тегувати файли на iCloud, тому там може виникнути якась проблема.

Однак, довгий і короткий, в тому, що принаймні на локальних дисках Mac дані тегу OpenMeta потрібно буде перемістити до нового атрибута _kMDItemUserTags, щоб Maverick міг бачити їх. Не велика справа, але для цього комусь потрібно написати утиліту.


1
Дивно, groups.google.com/d/msg/openmeta/DK4Of2QGkpM/KIK9VKaCQdkJ - це посилання, надане Google для публікації, але, переходячи за цим посиланням, іноді не вдається розкрити потрібну публікацію.
Грем Перрін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.