隐形位

我今天帮助了一位朋友看似令人困惑的问题:他可以在桌面上看到文件和文件夹(即所有窗口关闭或隐藏时看到的图标,但他在主文件夹中看不到“桌面”文件夹本身结束,不知何故,该文件夹已被隐藏。

有两种支持的方式1在Mac上将文件标记为“不可见”:

  • 用点开始文件或文件夹名称(例如“.like_this”)这是Unix惯例。
  • 切换文件或文件夹的HFS +不可见位这是Mac惯例。

不可见的位是元数据与每个文件和文件夹具有元数据(如创建和修改日期)的方式相同,它具有布尔“不可见”位标记为不可见的文件仍然是可读写的,它们不会显示在Finder或“打开”和“保存”对话框中隐形文件夹的内容不会继承隐形,这解释了为什么我的朋友可以在他的桌面上看到文件,但在他的主文件夹中看不到“桌面”文件夹本身。

HFS +不可见位不被尊重的一个地方是终端 -LS命令列出文件和文件夹,无论其不可见位的状态如何(该LS命令honor the Unix dot-file convention, though; such files are suppressed unless you use the -a or -A options.)

我不知道Mac OS X默认提供的任何软件可以让您查看或设置HFS +不可见位。

[请参阅下面的更新。]但是,如果您安装(免费)开发人员工具,则可以使用GetFileInfoSetFile公用事业。

例如,要检查您的桌面文件夹:

$ GetFileInfo ~/Desktop
directory: "/Users/gruber/Desktop"
attributes: avbstclinmedz
created: 03/30/2008 18:25:34
modified: 04/15/2008 18:55:14

(第一行是你在终端的命令行输入的内容;接下来的四行是结果。)GetFileInfo手册页解释“属性”行:每个字母代表一个HFS +元数据属性小写字母表示属性为off / false,大写字母表示属性为on / true“V”是不可见位的字母,因此,因为它在示例输出中是小写的,所以我们可以看到“Desktop”文件夹不是不可见的。

要使文件不可见:

$ SetFile -a“V”桌面/

然后:

$ GetFileInfo ~/Desktop
directory: "/Users/gruber/Desktop"
attributes: aVbstclinmedz
created: 03/30/2008 18:25:34
modified: 04/15/2008 18:55:14

请注意,切换不可见位不会更改文件夹的修改日期。

对大多数用户来说,更好的方法是使用一个好的文件信息工具,例如Bare Bones Software的超级获取信息只需将文件或文件夹拖到Super Get Info的图标上,您就会看到一个很好的窗口,显示与该项目相关的大部分元数据隐身用复选框表示当然,隐形物品是一个明显的问题,因为如果你看不到它们,你就无法拖动它们超级信息解决这个文件→打开隐藏的命令,这引出了一个开放的对话框,列出文件系统中的每一项。


更新:从Leopard开始,的chflags命令现在支持“隐藏”和“禁用”选项来切换隐形:

$ chflags hidden~ / Desktop

在HFS +卷上,这会切换不可见的位,就像使用SetFile2此外,您可以使用“-lO”(小写大号和资本Ø)选项LScommand to include file flags in the output; invisible files will be marked as “hidden”.


  1. 还有第三种方法,现在已被弃用在Mac OS X 10.4之前,在启动卷的根级别有一个名为“.hidden”的文件(由于前导点,它本身是不可见的)此文件包含一系列被视为不可见的文件和文件夹默认情况下,它包括基础的操作系统,如内核(/ mach_kernel)和BSD Unix-y目录如/箱在/ usr等等从10.4开始,这些文件和文件夹使用HFS +不可见位标记为不可见但根据这个, 一个/。隐file, if present, is still honored. ↩︎

  2. 一个区别SetFile的chflags是的-HFS +卷,SetFile会创建一个._文件名文件包含元数据;的chflags惯于这意味着SetFilecan mark files as invisible even on non-HFS+ volumes. ↩︎