我正在使用 TextMate,每次我编辑文件时,都会复制 ._文件 被建造。
这让我抓狂,上次它在我正在使用的一个应用程序上造成了一个严重的问题,我认为该文件是一个新组件,并且由于无法加载它(因为它不是一个新组件)它崩溃了。
我怎样才能删除这些临时文件?
答案1
._file
文件实际上不是临时文件,而是一个保存 Mac OS X 资源分支数据的文件。Mac OS X 将为存储在非 HFS 系统上的文件创建此文件,以保留元数据。
但是,您可以运行以下命令来禁用 TextMate 创建资源分支:
defaults write com.macromates.textmate OakDocumentDisableFSMetaData 1
如果您拥有最新版本(版本 1589 - 2009 年 11 月 23 日),如果您仍然想要其他驱动器上的元数据(对您的内部驱动器说是,对任何网络或非 HFS 驱动器说否),它还允许您输入文件系统数组:
defaults write com.macromates.textmate OakDocumentCustomFSMetaData '( afpfs, nfs, msdos, hfs )'
答案2
这些._
,或者点下划线文件是由 Mac OSX 创建,作为存储的另一种方式扩展属性在本身不支持这些功能的文件系统上。
尽管从技术和历史上看,这完全不同,但最新版本的 Mac OSX 处理资源分叉或多或少就像扩展属性至少从用户的角度来看是这样。请参阅此stackchange 问题有关(扩展)文件属性、资源分支和流等的更多(技术)信息。
ls -l
您可以使用命令行了解文件上是否存在扩展属性。具有扩展属性的文件的@
名称后会附加一个。执行此操作ls -l@
还会列出这些属性的名称。最后,执行此操作xattr -l <filename>
会打印指定文件的属性名称和数据(十六进制编辑器样式)。请参阅下面的示例。
$ > ls -la ~/Library/Fonts
total 225448
drwx------+ 536 arri staff 18224 Jun 17 04:57 .
drwx------@ 101 arri staff 3434 Aug 18 16:33 ..
-rwxr-xr-x@ 1 arri staff 45 Aug 12 2010 04b-03.suit
-rwxr-xr-x 1 arri staff 19492 Mar 25 2003 04b03.ttf
-rw-r--r--@ 1 arri staff 54544 Apr 24 2012 27344.ttf
...
$ > ls -la@ ~/Library/Fonts
total 225448
drwx------+ 536 arri staff 18224 Jun 17 04:57 .
drwx------@ 101 arri staff 3434 Aug 18 16:33 ..
com.apple.FinderInfo 32
-rwxr-xr-x@ 1 arri staff 45 Aug 12 2010 04b-03.suit
com.apple.FinderInfo 32
com.apple.ResourceFork 20314
-rwxr-xr-x 1 arri staff 19492 Mar 25 2003 04b03.ttf
-rw-r--r--@ 1 arri staff 54544 Apr 24 2012 27344.ttf
com.apple.metadata:kMDItemDownloadedDate 53
com.apple.metadata:kMDItemWhereFroms 166
$ > xattr -l ~/Library/Fonts/04b-03.suit
com.apple.FinderInfo:
00000000 46 46 49 4C 44 4D 4F 56 01 00 00 00 00 00 00 00 |FFILDMOV........|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020
com.apple.ResourceFork:
00000000 00 00 01 00 00 00 4E F2 00 00 4D F2 00 00 00 68 |......N...M....h|
00000010 C9 0B 1A C9 23 08 03 1A C9 0B 1A C9 23 02 1A C9 |....#.......#...|
...
请注意,除了 HFS Plus 之外,许多其他文件系统也支持扩展属性,但它们并不总是能与 Mac OSX 很好地兼容。
例如,SMB 安装的远程 Windows 文件系统 (NTFS) 就是一个例子。NTFS 文件系统作为 SMB-“协议”(以及它的 Mac 实现)都支持扩展属性,但在该上下文中它们被称为命名流。此功能通常默认禁用,但可以按照说明轻松启用这里。
答案3
TextMate 使用资源分支来存储编辑位置和代码折叠状态等信息。这些都是你可以不用的东西,尽管有它们当然更好。