图标?OS X 桌面上的文件

Chr*_*ris 96 desktop terminal ls macos

当我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"
Run Code Online (Sandbox Code Playgroud)

有没有人知道这是什么?

Dan*_*eck 113

它是什么?

它的名字实际上是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?
Run Code Online (Sandbox Code Playgroud)

用 改变chflags nohidden Icon^M

它的数据在哪里?

当文件的数据叉(即内容)为空(即终端中的文件大小为 0 字节)时,实际的图标数据存储在文件的资源叉中

$ ls -l@ Icon^M
    com.apple.ResourceFork  350895 
Run Code Online (Sandbox Code Playgroud)

您可以将资源分支复制到一个文件(例如在十六进制编辑器中查看),如下所示:

$ cp Icon^M/..namedfork/rsrc Icondata
Run Code Online (Sandbox Code Playgroud)

如何查看?

获取图像的最简单方法是将图标从其所在文件夹的“获取信息”对话框复制到剪贴板,然后在预览 ( Cmd-N) 中从剪贴板创建新图像。icns默认情况下,它是一个图像。

它的格式是ICNS,编码为一个图标资源derez。如果您在十六进制编辑器中打开它并删除前 260 个字节(因此文件以icns魔术字节字符串开头),您可以在 Preview.app 中打开它。或者,您可以使用XnView打开它

  • 苹果实际上经常在资源分支中隐藏他们的数据。我永远无法决定它是整洁还是误导。 (4认同)
  • 你想念一棵树的木头,蚱蜢。除了音量图标文件之外,还有很多案例,至少在传统上,在 MacOS 中,_icons 可以在资源叉中找到_。如果你想变得现代和时髦,而我们不需要 - 不需要 - 没有steenking-resource-forks - 我们现在是 Unix,你应该真正更正你的答案以使用现代和时髦`/ ..namedfork/rsrc` 后缀而不是生成警告消息的后缀。(-: (3认同)
  • 它是一致的。图标毕竟_are_资源叉内容。 (2认同)
  • @JdeBP 我不关心资源叉图标的一种或另一种方式,但它仍然与`.VolumeIcon.icns` 不一致。谢谢你的 `..namedfork` 提示,但我没有收到来自 `File/rsrc` 的警告。我读到我应该,但它出现在哪里? (2认同)
  • 我惊人的[通灵](https://trac.macports.org/ticket/18859) [powers](https://trac.macports.org/ticket/7645) 告诉我[所有这些`printf`s] (http://www.opensource.apple.com/source/xnu/xnu-1504.9.37/bsd/hfs/hfs_lookup.c) 进入系统日志。 (2认同)
  • *为什么*他们会选择在文件名中添加一个尾随返回`\r`? (2认同)

NRe*_*ngh 12

Icon?目录中的文件包含该目录的自定义图标图像。图像本身存储在扩展文件属性中,特别com.apple.ResourceFork是 ,这就是Icon?文件似乎没有长度的原因。

您可以使用以下命令检索该数据$ xattr -p com.apple.ResourceFork Icon?或查看所有扩展属性$ xattr -l Icon?

至少在 Snow Leopard 上,它们似乎已被系统图标淘汰(在 ~/Desktop/ 的情况下,在图标视图中查看您的主目录时可以看到该图标。)但是对于两个自定义目录图标我在我的系统上,它仍然存在。


Jay*_*zzo 7

它是什么?

它是存储文件夹图标图像的文件,如果我手动将图像加载到文件夹中,我只能创建它。默认情况下,我的系统上没有这些。

如何查找 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;
Run Code Online (Sandbox Code Playgroud)

如何创建图标^M文件

  1. 打开查找器
  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;
Run Code Online (Sandbox Code Playgroud)

参考我在另一个问题上的帖子:

如何在 Mac OS X 中删除空文件夹?