Икона? файл на рабочем столе OS X


82

Когда я использую lsсвой рабочий стол из терминала (используя ls ~/Desktop), я вижу файл с именем Icon?. Насколько я могу судить, он пустой ( nano Icon?ничего не показывает). Он не отображается на моем рабочем столе, и open Icon?показывает предупреждение Finder

Этот элемент используется Mac OS X и не может быть открыт

Вот вывод из mdls Icon?:

kMDItemContentType         = ""
kMDItemFSContentChangeDate = 2009-09-23 13:32:52 -0600
kMDItemFSCreationDate      = 2009-09-20 07:27:46 -0600
kMDItemFSCreatorCode       = "MACS"
kMDItemFSFinderFlags       = 16384
kMDItemFSHasCustomIcon     = 0
kMDItemFSInvisible         = 1
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery      = 0
kMDItemFSLabel             = 0
kMDItemFSName              = "Icon "
kMDItemFSNodeCount         = 0
kMDItemFSOwnerGroupID      = 20
kMDItemFSOwnerUserID       = 501
kMDItemFSSize              = 0
kMDItemFSTypeCode          = "icon"

Кто-нибудь имеет представление о том, что это такое?


6
Реальный вопрос заключается в следующем: есть ли способ остановить создание операционной системы этих чертовых файлов в каждом каталоге? Меня действительно раздражает, что они появляются в Dropbox.
JeremyKun

1
@JeremyKun 2017 здесь, и я хотел бы знать ответ на этот вопрос.
escapecharacter

Эти файлы НЕ создаются автоматически "в каждом каталоге", если у вас нет какого-либо вредоносного программного обеспечения, которое вызывает их создание. Кроме того - они могут вас раздражать, но у них тоже есть свои функциональные возможности. Это реализация «Custom user-icon» в MacOS. Если пользователь решит вставить любое изображение по своему вкусу, чтобы он служил иконкой какого-либо файла или каталога - он окажется скрытым iCon? файл. Удаление их просто удаляет пользовательский значок.
Мотти Шнеор

Ответы:


95

Что это такое?

Это имя на самом деле Icon\r, с \rвозвращением каретки 0x0D. Если позволить оболочке автоматически завершить путь в Терминале, то получится Icon^M, ^Mбудучи \r.

Icon^Mфайл, существующий во всех каталогах, которые имеют собственный значок в Finder. Если вы измените значок каталога, например, в диалоговом окне « Получение информации », вставив изображение в значок в левом верхнем углу, Icon^Mфайл будет создан.

Изменение значка тома создает скрытый .VolumeIcon.icnsфайл.

Почему это невидимо?

Он невидим в Finder, потому что его hiddenатрибут установлен.

$ ls -lO Icon^M 
-rw-r--r--@ 1 danielbeck  staff  hidden 0 24 Apr 23:29 Icon?

Изменить с chflags nohidden Icon^M.

Где его данные?

Хотя ветвь данных файла (т. Е. Содержимое) пуста (т. Е. Размер файла равен 0 байт в терминале), фактические данные значков хранятся в ветке ресурсов файла .

$ ls -l@ Icon^M
    com.apple.ResourceFork  350895 

Вы можете скопировать ветку ресурса в файл (например, для просмотра в шестнадцатеричном редакторе):

$ cp Icon^M/..namedfork/rsrc Icondata

 Как я могу просмотреть это?

Самый простой способ получить изображение - скопировать значок из диалогового окна « Получение информации » папки, в которой он находится, в буфер обмена, а затем создать новое изображение из буфера обмена в Preview ( Cmd-N). Это icnsизображение тогда по умолчанию.

Его формат - JPEG 2000 в соответствии с версией XnView для Mac OS, и вы сможете открыть его с помощью этой программы. Похоже, что он не работает с другими программами, которые должны поддерживать JPEG 2000, поэтому эта информация формата, вероятно, неверна.



3
Apple фактически делает это, скрывая свои данные в ветке ресурсов довольно часто. Я никогда не могу решить, аккуратно ли это или вводит в заблуждение.
Лукаса

2
Это соответствует. Иконки в конце концов являются содержимым ветки ресурса.
JdeBP

3
Ты скучаешь по дереву за одно дерево, кузнечик. Не только файл значков томов, но и множество случаев, когда, по крайней мере, в MacOS традиционно, значки можно найти в развилках ресурсов . Если вы пытаетесь быть современным и модным, а мы - не нуждаемся в том, чтобы быть в восторге от ресурсов - мы - Unix-сейчас, вам действительно следует исправить свой ответ, чтобы /..namedfork/rsrcвместо этого использовать суффикс modern и hip того, который генерирует предупреждающее сообщение. (-:
JdeBP

2
Мои удивительные психические силы сказать мне , что все эти printfс перейти в системный журнал.
JdeBP

10

Icon?Файл внутри каталога содержит значок пользовательского изображения для этого каталога. Само изображение хранится внутри расширенного атрибута файла, в частности com.apple.ResourceFork, поэтому у Icon?файла, по-видимому, нет длины.

Вы можете получить эти данные с помощью $ xattr -p com.apple.ResourceFork Icon?или просмотреть все расширенные атрибуты с помощью$ xattr -l Icon?

В Snow Leopard, по крайней мере, они, по-видимому, были удалены для системных значков (в случае ~ / Desktop / этот значок будет виден при просмотре вашего домашнего каталога в виде значков), но для двух пользовательских значков каталогов, которые я есть в моей системе, он все еще существует.


Icon^MНасколько мне известно, "системные значки" никогда не создавали файл. Переименуйте эти специальные папки с помощью пользовательских значков (проще всего это сделать ~/Applications, так как они все равно не существуют по умолчанию), и их значок изменится вместе с ним.
Даниэль Бек

@Daniel Yup; Я полагаю, что у OP есть настраиваемая иконка для папки Desktop.
NReilingh

5

Что это такое?

Это файл, в котором хранится изображение значка вашей папки. Я смог создать его только в том случае, если вручную загрузил изображение в папку. У меня их нет в моей системе по умолчанию.

Как найти файлы Icon ^ M

НОТА:

Это не то же самое, что .icnsрасширение файла.

Если вы параноидальны, если нашли ложный положительный результат, тогда используйте: ctrl+ v ctrl+ mвместо?

#!/bin/bash
# =============================================================================
# MAC OSX HIGH SIERRA 10.13.4 (17E199)
# Terminal: Version: 2.8.2 64-Bit (Intel): Yes
# Terminal Location: /Applications/Utilities/Terminal.app
# =============================================================================

echo 'Searching Documents for Icon files...'
find ~/Documents -type f -name 'Icon?' -print;

Как создать файл Icon ^ M

  1. Открыть Finder
  2. Щелкните правой кнопкой мыши на папке
  3. Нажмите и удерживайте Optionна клавиатуре
  4. Выберите Показать инспектор
  5. Перетащите изображение в верхний левый значок папки.
  6. Запустите ls -lahэтот каталог
    1. Тебе следует увидеть:
      • -rw-r--r--@ 1 username staff 0B May 13 22:23 Icon?

Как удалить файл Icon ^ M

Если вам нужно удалить его по какой-либо причине ... скажем, случайно нарочно тестируя его.

#!/bin/bash
# =============================================================================
# MAC OSX HIGH SIERRA 10.13.4 (17E199)
# Terminal: Version: 2.8.2 64-Bit (Intel): Yes
# Terminal Location: /Applications/Utilities/Terminal.app
# =============================================================================

echo 'Removing Icon files from Documents...'
find ~/Documents -type f -name 'Icon?' -print -delete;

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

Как я могу удалить пустые папки в Mac OS X?


1
+1, так как «Как удалить» отсутствует из принятого ответа. И нет, они бесполезны при доступе из Windows, через bash minGW.
gbarry
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.