核心概念
chflags hidden 是一个在 macOS 和其他基于 BSD 的系统(如 FreeBSD)中使用的命令,它的作用是为文件或目录设置一个“隐藏”标志位。

(图片来源网络,侵删)
这个命令会告诉系统:“请把这个文件或文件夹标记为隐藏的”。
命令详解
命令格式
chflags hidden <文件或路径>
参数说明
chflags: 这是 "change flags"(更改标志位)的缩写,它是用来修改文件系统标志位的命令。hidden: 这是你要设置的标志位名称,代表“隐藏”。<文件或路径>: 你想要隐藏的文件或文件夹的路径。
常用选项
-R或--recursive: 递归操作,如果对一个目录使用此选项,则会将该目录下的所有文件和子目录都设置为隐藏状态。# 隐藏一个目录及其所有内容 chflags -R hidden /path/to/your/folder
chflags hidden 的实际效果
当你使用 chflags hidden 隐藏一个文件后,会发生什么?
-
在图形用户界面 中:
- 在 macOS 的 Finder(访达) 中,默认情况下,被
chflags hidden隐藏的文件和文件夹会消失,就像它们被删除了一样,但它们实际上仍然存在于原位置。 - 这与 Windows 中通过设置“隐藏”属性后文件变为半透明显示的效果不同,macOS 的默认行为是直接隐藏。
- 在 macOS 的 Finder(访达) 中,默认情况下,被
-
在命令行终端 中:
(图片来源网络,侵删)- 默认情况下,
ls命令不会显示带有hidden标志位的文件。 - 你需要使用
ls命令的特殊选项才能看到它们:ls -O: 显示文件的标志位。ls -la: 显示所有文件(包括隐藏文件),但chflags hidden的文件通常还是会在这里被隐藏。ls -lao: 这是最常用的组合,它会列出所有文件,并显示它们的标志位。
示例:
# 创建一个测试文件 touch test_file.txt # 查看文件列表(默认看不到标志位) ls -l # 输出: -rw-r--r-- 1 user staff 0 Oct 26 10:00 test_file.txt # 使用 chflags hidden 隐藏文件 chflags hidden test_file.txt # 再次查看文件列表,文件不见了 ls -l # (没有输出) # 使用 ls -lao 查看所有文件和标志位 ls -lao # 输出: hidden -------------- 1 user staff 0 Oct 26 10:00 test_file.txt # 你可以看到 "hidden" 这个标志位已经被标记上了。
- 默认情况下,
如何取消隐藏?
要取消隐藏,你需要使用 chflags nohidden 命令。
# 取消单个文件的隐藏 chflags nohidden <文件或路径> # 递归取消一个目录及其所有内容的隐藏 chflags -R nohidden /path/to/your/folder
示例:
# 取消 test_file.txt 的隐藏 chflags nohidden test_file.txt # 再次使用 ls -lao 查看 ls -lao # 输出: -rw-r--r-- 1 user staff 0 Oct 26 10:00 test_file.txt # "hidden" 标志位消失了,文件在 Finder 中也重新出现了。
与 开头的隐藏文件的区别
这是一个非常重要的区别,也是很多 macOS 新手容易混淆的地方。

(图片来源网络,侵删)
| 特性 | chflags hidden |
开头的文件 (如 .bash_profile) |
|---|---|---|
| 机制 | 文件系统标志位 | 文件名约定 |
| 系统 | macOS, BSD | Linux, macOS, Unix 等(通用) |
| Finder行为 | 默认完全隐藏(需要特殊设置才能显示) | 默认可见(文件名前有一个小圆点) |
| 终端默认行为 | ls 默认不显示 |
ls 默认不显示,但 ls -A 会显示 |
| 主要用途 | 隐藏系统文件、用户不想看到的文件 | 隐藏配置文件、脚本等,是 Unix-like 系统的传统做法 |
总结一下:
chflags hidden是 macOS 特有的、更“硬核”的隐藏方式,通过底层标志位实现。- 开头的文件是跨平台的通用约定,主要用于区分配置文件。
如何让 Finder 显示被 chflags hidden 隐藏的文件?
如果你想在 Finder 中看到这些被“硬”隐藏的文件,可以执行以下命令:
# 创建一个名为 .hidden 的文件(如果不存在) # 并将要显示的文件路径写进去,每行一个 echo "/path/to/your/hidden_file" >> ~/.hidden echo "/path/to/your/hidden_folder" >> ~/.hidden
或者,更简单的方法是使用 defaults 命令来修改 Finder 的设置:
# 显示所有文件,包括被 chflags hidden 隐藏的文件 defaults write com.apple.finder AppleShowAllFiles -bool true # 重启 Finder 使设置生效 killall Finder
要恢复隐藏,只需将上面的 true 改为 false,然后再次重启 Finder。
chflags hidden 是一个强大的 macOS 命令,用于通过设置文件系统标志位来隐藏文件和目录,它与 Linux/Unix 中通过文件名(前缀)来隐藏文件的方式有本质区别,它的隐藏效果非常彻底,是管理 macOS 系统文件或创建完全不可见文件的利器。
