rm
我在 MacBook 上查看该命令的手册页,并注意到以下内容:
-W 尝试取消删除指定的文件。目前,此选项只能用于恢复被白色覆盖的文件。
这是什么意思?什么是“白化”?
答案1
空白是由一些“透明”高阶文件系统(使用一个或多个真实位置作为其表示基础的文件系统)放置的一种特殊标记文件,特别是联合文件系统,以指示存在于其中之一的文件基本位置已在人工文件系统中删除,尽管它仍然存在于其他地方。列出联合文件系统不会显示白色文件。
有一种特殊类型的文件来表示这些是 macOS 派生的 BSD 传统:macOS 使用st_mode
位 0160000 来标记它们。使用ls -F
,这些文件将标有一个%
符号, 和ls -W
将表明它们存在(否则,它们通常会从列表中省略)。许多联合系统还会使用特殊名称来创建普通文件,以表示不支持这些文件的系统上的空白。
我不确定 macOS 是否会以任何方式公开这些内容,但其 BSD 传统的其他系统会这样做,并且外部文件系统驱动程序可能会使用它们。
答案2
“whiteout”是某些联合文件系统的一个功能。
如果您有一个由联合挂载覆盖的文件层次结构,并且文件存在于生成的可见文件层次结构的两个层中,则可以使用“whiteout”从顶层删除该文件,同时将其保留在较低层中(就像使用 Tipp-ex 一样)。
该rm
实用程序能够删除空白并使文件再次出现(因为它从未从较低的文件系统中删除)。