Mac OS X 的文件系统

Mac OS X系统特性与命令行操作解析 本文深入探讨了Mac OS X系统的多用户机制、文件系统结构、登录安全策略、密码设置规范、命令行操作技巧等内容,涵盖了系统内核组成(如Mach微内核、BSD工具)、权限管理、进程控制、Vim编辑器使用等多个关键技术点,并提供了丰富的命令示例与实际操作建议。 阅读详情

[入门] Mac OS X 的文件系统

[ 整理自《 Mac OS X Help Desk 》中文译版 ]

万维网( World Wide Web )是在运行基于 UNIX 的操作系统的一台 NeXT 计算机上发明出来的,所以 Web 地址看起来非常类似于文件的 UNIX 路径名也就不令人奇怪了。用一条路径来描述一个 Web 页面在 Internet 上的位置所使用的约定,基本上就是 Mac OS X 描述一个文件或文件夹在文件系统中的位置所使用的同一种机制。

首先需要明确的一点:不管用户将磁盘分成了几个区,也不管用户拥有多少个存储设备(比如多个内置硬盘,以及接入的外置硬盘),文件系统的根始终是当前系统所在的宗卷(也叫启动宗卷),用一个正斜杠(/)来访问根。而其他宗卷都挂载在 /Volumes 文件夹下,这个 Volumes 默认是隐藏文件夹,一般用户看不到,在“磁盘工具”或“系统概述”关于宗卷的部分,都可以查看每个宗卷的挂载点。虽然在操作系统的文件系统中,宗卷都以文件夹的方式去访问(比如,一个宗卷名叫“ FireWire HD ”外置火线硬盘的访问地址是 /Volumes/FireWire HD ),但为了不使用户感到困惑,在图形用户界面的 Finder 窗口或桌面上,会用硬盘或其光盘或者他类似图标显示给用户访问。

(题外话:在 UNIX 类操作系统中,所有设备都以文件或文件夹方式访问,比如,要在打印机上打印,那就是给一个叫打印机的文件写入数据,而要在扫描仪上扫描图像,则是通过从一个叫扫描仪的文件上读取数据来实现,至于硬件具体怎么处理这些操作系统读写过来的数据,则由驱动程序来负责解析。这种统一数据接口的好处可以去问问驱动开发者。而且由于接口统一,操作系统不需要为不同的硬件设计不同的功能,减少复杂程度也保证了稳定。在 UNIX/Linux 中,驱动程序不兼容的时候,最多是降低了硬件的性能;而如果是在 Windows 中,一个不兼容的硬件或硬件驱动程序则会让系统摆一个蓝脸给你看。)

一个以正斜杠(/)开头的路径是一个绝对路径,表示从文件系统的根开始来指向一个文件或文件夹;而相对路径则表示该路径是从用户当前所处的位置开始指向一个文件或文件夹。

另外还有一些快捷指向方式:
用户的主目录可以用否定符(~)来引用,比如,用 ~sp4navy/Documents 来指向用户名为 sp4navy 的帐户的“文稿”文件夹,而 ~/Documents 则表示当前当前登录帐户的“文稿”文件夹。
以一个点开头的路径表示从当前的工作文件夹开始指向;以两个点开头的路径表示从当前的工作文件夹的父文件夹(上一级文件夹)开始指向。这个对于网页设计者而言也是非常熟悉的了。

对于一些系统级的文件夹,系统认为普通用户不需要使用,为了安全和美观,便将它们隐藏。还有,根据一个很早就开始使用的约定,所有以点开头的文件和文件夹也不会出现在 Finder 中。如果要访问这些文件夹,可以使用“转到文件夹...”手动填路径来实现。

Mac OS X 对文件管理是非常有序的,比如仅供当前用户使用的资源文件放在 ~/Library 下,而根目录下的 /Library 则对所有用户有效,至于 /System/Library 中的资源文件由系统专属,不允许也不推荐用户去动它们。
那么,诸如字体、框架、参数预置之类的数据在不同的地方都有,系统需要搜索多个位置来寻找资源,这个搜索有个先后顺序, Mac OS X 查找资源的先后顺序如下:
1、Users ( ~/Library )
2、Local ( /Library )
3、Network ( /Network/Library )
4、System ( /System/Library )
如果相同的文件在不同位置都有,那么系统会根据当前用户的属性来判断使用哪一个,对于普通用户,自然是按 1 > 2 > 3 > 4 的方式来选择。
刚才从用户的角度讲了 Mac OS X 怎样组织文件和文件夹,下面从技术的角度将 Mac OS X 怎么管理卷上的那些文件。

Mac OS X 支持好几种宗卷格式,不过最常用的是 Mac OS 扩展( HFS+ )格式,从 Mac OS 8.1 以来一直是推荐格式。这个格式不是大小写敏感的,但大小写保护,意思是:你无法在同一个位置同时保存 File1 和 file1 两个文件,因为 Mac OS X 认为它们是相同的,但是,如果你一开始保存的是 File1 ,那么它始终是 File1 而不会变成 file1 。从 Mac OS X Server 10.2.2 开始,这个格式引入了“日志式”概念,它会记录文件每次的更改,以保护文件不受断电或者宕机的影响。从 Mac OS X 10.3 开始,这个概念全面应用。
另外, HFS+ 支持资源分支,很有用的东东,后面会详细介绍。

然后是 Mac OS 标准( HFS )格式,比较旧,存储空间利用率很低, Mac OS X 不能安装在这上面。基本上这个格式没有使用的意义,但是,如果你正在使用很古老的系统( Mac OS 8.1 以前),你可能需要它,因为它们不识别 HFS+ 。

再然后是 UNIX 文件系统( UFS ),这种格式兼容其他 UNIX 类操作系统,它有一个重要特性:它是大小写敏感的,所以你可以在同一个位置同时保存 File1 和 file1 。如果你需要开发 UNIX 应用软件,这个是比较理想的格式。需要注意的是: UFS 对 Classic 环境和 Mac OS 9 是不可见的。

MS-DOS 格式( FAT ),这个不用多说,和 Windows 兼容。需要注意的是:在“磁盘工具”中用户无法直接指定使用 FAT 16 还是 FAT 32 格式,“磁盘工具”会根据宗卷的大小来自动选择(虽然 FAT 32 的空间利用率更好,但它的文件表需要占用的空间也大,所以对于一些小宗卷 ---- 比如软盘 ---- 可能 FAT 16 更合适)。如果一定要自己指定,则可能需要用 Shell 来格式化。

一般情况下,我们只用 HFS+ 格式。在这个文件系统上,每个文件都有两个分支( Fork ):数据分支( Data fork )和资源分支( Resource fork )。其中的数据分支和我们普通的文件的概念相同,而资源分支则用来存储其它 Mac OS X 特性的信息,比如自定义图标、用户指定的打开方式(单独指定的“打开方式”保存在该文件的资源分支中,而“应用到所有”的“打开方式”则保存在 ~/Library/Preferences/com.apple.LaunchServices.plist 文件中)等。在 Finder 窗口中,不管是否显示隐藏文件,我们都只能看到一个文件(数据分支),对资源分支需要通过其他间接操作(如果在“显示简介”里贴自定义图标,或者指定打开方式等),但一些程序员工具也可以单独对资源分支进行处理。
由于只有 Mac OS X 才能识别资源分支,所以在不同的文件系统中交换文件的时候,其他的系统会把资源分支舍弃掉。为了避免丢失这些信息,在需要途径非 Mac OS X 的系统之前,应该先转换,比如 BinHex ,或者制作成磁盘映像。需要注意:标准的 zip 和 tar 格式都不支持资源分支,但系统自带的“归档”功能以及 StuffIt 等压缩软件可以把资源分支独立成一个文件,然后在 Mac OS X 上解压缩时能识别并还原回去,以此来保存资源分支。当在 Mac OS X 上直接把一个文件保存在 FAT 等不支持资源分支的宗卷上时,它也会把资源分支独立成一个文件(和原文件同名,但添加了“ ._ ”前缀),以便在 Mac OS X 上访问该文件时资源分支得以重现,在 Windows 上打开由 Mac OS X “归档”出来的 zip 文件也是如此。其实,这个是 Mac OS X 所使用的影子文件( AppleDouble )的方式。而如果你在 Windows 使用该文件时将 ._ 文件删除,那么原来资源分支上的数据也就没了~~
突然想到 Backup 3.1 ,顺便说一下,在备份前, Backup 会先扫描所有符合备份要求的文件,然后有一个标记的过程,这个过程会把需要备份的资源分支提取出来单独保存,也就是说, Backup 是把文件的数据分支和资源分支分开保存的,所以你直接爆开备份文件直接挂载里面的映像时,所有的文件都没有资源部分,而需要用 Backup 还原文件才能再把数据分支和资源分支合并起来。同时,如果备份文件中资源分支数据量过多(比如大量的文件都有自定义图标),那么这个“标记过程”将会比较慢,而且 ~/Library/Application Support/Backup/Backup Library 里的备份库也会很大。

(题外话:相信了解了资源分支之后,部分新用户对于自定义图标的疑惑应该有所了解了。)

Mac OS X 中还有一种叫“包”的机制(《 Mac OS X Help Desk 》的中文译版错误百出,比如 Disk Image 本来叫“磁盘映像”,它说是“磁盘图像”;“钥匙串” Keychain 它说是“键链”,貌似是金山词霸直译,令人哭笑不得。而在这里,它翻译成“束”,我也不敢“尽信书”,鉴于 Mac OS X 中显示的是“显示包内容”而不是“显示束内容”,所以我打算还是说“包”机制好了)。比如 .app 应用程序、 .bundle 捆绑资源、 .component 组件、 .plugin 插件、 .pkg 安装包等,它以单个文件的形式将一些结构化组织好的文件们显示给用户。这大大方便用户管理和使用一些具有集体组织性的文件。

Windows 上充分迷信扩展名,一个什么样的扩展名就代表一个什么类型的文件;而 Linux 则有点过分放纵扩展名,基本上扩展名仅仅是一个指示,在 Linux 上就算是一个 .txt 也是可以执行的。相比之下, Mac OS X 则比较中立,即不严格约束扩展名,也不对普通用户放纵。在连按(在 Windows 上一般说“双击”,不过在 Apple 的文档中用“连按”)一个文件的时候, Mac OS X 先在资源分支上查找这个文件的创建者(这个创建者是指生成这个文件的应用程序,而不是保存这个文件的用户)信息,如果它没有被单独指定过打开方式,那么会直接用该应用程序打开;如果没有相关信息,再根据扩展名来判断。
细心的用户会发现 Microsoft Office 2004 自己安装的部分字体没有扩展名,不过由于资源分支里已经标示了它们是字体文件,所以是可以正常用的,因为 Mac OS X 优先判断的是资源分支里的信息。但如果去掉资源分支,那么它们就变成了没有扩展名不知道任何信息未知文件,就不知道干什么用了。
一般情况下,普通用户不需要去直接干涉资源部分的内容,系统也不提供这样的功能。但是,如果真的需要,那么可以用 Shell 或者第三方工具来藐视扩展名直接指定文件类型等等。

注意, Shell 中 cp 和 mv 命令是忽略资源分支的,复制或移动过的文件的资源分支将丢失。安装了 Developer Tools 的用户可以用 CpMac 和 MvMac 等 Mac OS X 特有的命令,它们用法和 cp 和 mv 一样,但支持资源分支。
另外还有 ditto 命令,如果要复制一个文件并保留它的资源分支,那么可以: ditto -rsrcFork 源文件 目标文件
还有, Renamer4Mac 用户可以发现在预置里可以选择是通过“系统更名”还是通过“ Finder 更名”。其中,“ Finer 更名”就像普通在 Finer 里更名操作一样,只是自动完成而已。而“系统更名”其实是借助 Shell ,操作速度快,但由于忽略了资源分支,所以更名之后的文件的资源分支将丢失。
 
3、Mac OS X文件系统深度解析 本文深度解析了Mac OS X文件系统的结构与操作方法。从文件系统的整体组织方式到用户主文件夹、应用程序文件夹和多个Library文件夹的详细用途,文章全面介绍了Mac OS X中各类文件夹的功能。同时,还总结了文件系统操作流程和注意事项,帮助用户更好地管理和使用系统文件,提高操作效率与安全性。 阅读详情

相关推荐

8、Mac OS X文件系统深度解析

本文深入解析了Mac OS X的文件系统,重点介绍了主Library文件夹、系统Library文件夹和个人Library文件夹的功能与用途。同时,详细说明了常见的Library子文件夹及其作用,并提供了访问和操作这些文件夹的方法。此外,还涵盖了其他常见文件夹、隐藏文件夹以及相关注意事项,帮助用户更好地管理和使用Mac OS X系统。

ol7890123的博客 204

Mac OS X背后的故事(十)Mac OS X文件系统的来龙去脉(下)

文/王越 由于各种缺点,干掉HFS+势在必行,然而用什么取代HFS+呢?苹果开始秘密移植下一代的文件系统—ZFS,然而在诸多因素的干扰下,Mac OS X的ZFS支持却只是昙花一现,未来文件系统之路将走向何方? 文件系统的新时代——ZFS 为了代替HFS+,苹果开始为研发下一代文件系统招兵买马,准备大干一场。但这时Sun公司的工作让苹果的员工们为之一振。 2004年,Sun

miniDeng的专栏 1420

Mac OS X文件系统的深入解析

本文还有配套的精品资源,点击获取 简介:Mac OS X操作系统以其独特的用户界面和稳定性著称,其文件系统是核心管理机制。文章详述了文件系统的起源、设计原理、主要特性和操作,包括HFS+和APFS的特性以及日常维护。 1. Mac OS X文件系统的起源与发展 Mac OS X的文件系统是计算历史上最具影响力的技术之一,它的起源可以追溯到1985年发布的Ma...

weixin_36238982的博客 2033

MAC OS X 文件系统介绍

打开Macintosh HD你会发现内中有四个文件夹(一般情况下,隐藏文件夹是不可见的,而且,可能会更多,比如安装xcode后会有developer文件夹).  分别有——应用程序(Applications)、系统(System)、用户(User)、资料库(Library)。四个文件夹中又分别各有若干数量的文件夹存在。   Applications:这个当然就是存放各种软件的位置了。  

h_x_j的博客 3651

6、Mac OS X和iOS开发:内核、文件系统与开发环境全解析

本文深入解析了Mac OS X和iOS开发中的核心组件,涵盖XNU内核支持的多种文件系统(如HFS+、UFS、NFS等)、虚拟文件系统(VFS)的抽象机制、统一缓冲区缓存(UBC)的工作原理,以及I/O Kit驱动框架和Libkern库的作用。同时详细介绍了基于Xcode的内核开发环境,使用C++嵌入式子集进行内核扩展开发的流程,并通过'Hello World'示例演示了从项目创建到构建的完整过程。文章还总结了开发要点、注意事项、未来趋势及常见问题解答,为系统级开发者提供了全面的技术参考。

yy01234的博客 98

Pyinstaller 打包 Pyzbar 时缺失 DLL 文件的排查与修复指南

本文详细解析了使用Pyinstaller打包Pyzbar库时,因缺失关键DLL文件导致程序闪退的常见问题。文章提供了从问题复现、错误诊断到最终修复的完整解决方案,核心在于通过修改.spec配置文件,手动将缺失的libzbar-64.dll等文件添加到打包过程中,确保生成的可执行文件能独立运行。

wdx012345的博客 504

Mac OS X背后的故事(十一)Mac OS X文件系统的来龙去脉(下)

由于各种缺点,干掉HFS+势在必行,然而用什么取代HFS+呢?苹果开始秘密移植下一代的文件系统—ZFS,然而在诸多因素的干扰下,MacOSX的ZFS支持却只是昙花一现,未来文件系统之路将走向何方? 文件系统的新时代——ZFS 为了代替HFS+,苹果开始为研发下一代文件系统招兵买马,准备大干一场。但这时Sun公司的工作让苹果的员工们为之一振。 2004年,Sun公司发表了其杰出的文件系统Z...

weixin_30362801的博客 234

FLUKA软件在Ubuntu的安装指南(亲测有效)

FLUKA其强大的蒙特卡洛模拟能力使得用户能够模拟复杂的辐射相互作用过程

chencheng1127的博客 2887

Mac OS X背后的故事(十)Mac OS X文件系统的来龙去脉(上)

文 / 王越 HFS+和UFS文件系统同时被引入早期的Mac OS X,随着若干年的发展,HFS+提供的功能已超越UFS,使其在Mac OS X 10.5之后成为成为唯一正式的Mac OS X系统,但因为其背负许多的历史包袱,为考虑兼容性,这些陈旧的设计并不能被推翻重来,所以苹果开始秘密研发下一代的文件系统。 著名BSD开发者Marshall Kirk McKusick

miniDeng的专栏 2999

GB/T 27930-2023协议升级与CANoe仿真测试实践

本文深入解析GB/T 27930-2023协议的核心升级,包括A/B类系统分类与EVIN码引入,并详细指导如何使用CANoe搭建仿真测试环境、编写CAPL脚本及利用DLL库进行一致性验证与故障注入测试,助力开发人员确保电动汽车充电通信的合规性与稳定性。

y7z8a的博客 541

第二十届全国大学生智能车竞赛-地瓜机器人智慧医疗挑战赛技术解析与实战指南

本文深入解析了第二十届全国大学生智能车竞赛-地瓜机器人智慧医疗挑战赛的核心技术。内容涵盖从零搭建数字孪生环境、实现AI视觉任务(二维码识别、引导线追踪、目标检测)、在边缘设备部署轻量化大模型进行图生文描述,到遥操作与自主控制的平滑切换,并提供了基于ROS2的系统集成与赛场实战指南,助力参赛者高效备赛。

weixin_29252171的博客 2778

Mac OS X背后的故事(十一)Mac OS X文件系统的来龙去脉(上)

文 / 王越 HFS+和UFS文件系统同时被引入早期的Mac OS X,随着若干年的发展,HFS+提供的功能已超越UFS,使其在Mac OS X 10.5之后成为成为唯一正式的Mac OS X系统,但因为其背负许多的历史包袱,为考虑兼容性,这些陈旧的设计并不能被推翻重来,所以苹果开始秘密研发下一代的文件系统。 [caption id="attachment_13209" align="alig...

《程序员》官方BLOG 339

Python+QMT量化交易实战:从零搭建你的第一个极速策略(附完整代码)

本文提供了一份详细的Python+QMT量化交易实战指南,手把手教你从零搭建一个可回测、可实盘的极速策略。内容涵盖环境配置、QMT核心机制解析、双均线策略的完整代码实现、回测优化方法以及实盘部署要点,帮助量化交易新手快速入门并掌握核心开发流程。

b9c0d的博客 1014

Mac文件系统结构

求打赏求收藏求转发! 看到了这篇感觉说的非常详细,有被科普到 Peace and love 在OS X的系统中,不再有Windows用户熟悉的C盘、D盘,这是因为OS X底层是Unix系统,其目录机构符合Unix系统的规范。MAC机器主板使用了Intel主导的EFI标准,硬盘分区格式采用GPT。这种EFI+GPT的方式相比传统的BIOS+MBR的方式有很多好处,具体可以参考我之前写的博客。 1 硬盘分区 默认情况下,MAC OS X把硬盘分成了3个GPT分区。第一个就是GPT标准要求的ESP分.

Jason~~ 3801

全国各省份影像下载地址(11级别)

cesium中使用urltemplate加载,leaflet中使用tile加载,具体加载有问题可以给我留言。

资深三维GIS开发 5150

Linux磁盘扩容实战:用parted命令无损扩展/data分区(附常见报错解决方案)

本文详细介绍了在Linux生产环境中使用parted命令对已挂载的/data分区进行在线磁盘扩容的完整实战流程。通过风险评估、状态检查、parted工具深度解析及实战演练,指导用户安全完成动态扩容,并提供了常见报错如'Partition is being used'、MBR 2TB限制等的解决方案,确保业务不中断、数据不丢失。

weixin_29207439的博客 297

Mac OS X背后的故事(九)Mac OS X文件系统的来龙去脉

原文地址:http://www.programmer.com.cn/13200/ HFS+和UFS文件系统同时被引入早期的Mac OS X,随着若干年的发展,HFS+提供的功能已超越UFS,使其在Mac OS X 10.5之后成为成为唯一正式的Mac OS X系统,但因为其背负许多的历史包袱,为考虑兼容性,这些陈旧的设计并不能被推翻重来,所以苹果开始秘密研发下一代的文件系统。

yazhouren的专栏 2246

ollama如何在自己的服务器上跑Qwen3(小白必看)

在国内下载ollama最新安装包时,使用curl -fsSL https://ollama.com/install.sh | sh命令可能会遇到网络问题导致下载进度停滞。为了解决这一问题,可以通过国内的镜像源进行下载,例如使用modelscope社区提供的最新ollama镜像仓库。具体步骤包括:首先通过pip install modelscope安装modelscope,然后使用modelscope download命令下载ollama-linux镜像,接着进入下载目录并赋予安装脚本执行权限,最后运行安装脚

Ven%的博客 756

Mac OS X下读写ext2/ext3文件系统

我的移动硬盘上,有个分区是ext2文件系统的,不能在Mac OS X中挂载。幸好,在开源世界里,我们总是能找到各种问题的解决方法,感谢无私的开发者。 fuse-ext2是ext2文件系统在FUSE上的实现,支持Linux和Mac OS X。FUSE是在操作系统用户态下实现的文件系统,源自Linux,Mac OS X的移植版本主要有三个,MacFUSE、Fuse4X和OSXFUSE,其中,MacF

无欲则刚-做喜欢的事 8794

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Mac OS X文件系统的附加属性@如何彻底删除

转自:https://www.jianshu.com/p/3782d73cb3e8 midmirror 有时候在 Mac 系统下读写 NTFS 分区时,会发现一些文件不能打开。 显示错误为: 项目“XXX”已被 OS X 使用,不能打开。 如果再终端 ls -al 命令一下就可以看到: -rwxr-xr-x@ 文件的读写权限中被加上了一个@符号,这就是 Mac OS X...

程序员写的技术 FAQ 和杂文 5788

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

MAC_OS_X终端命令大全

OSX 的文件系统 OSX 采用的Unix文件系统,所有文件都挂在跟目录 / 下面,所以不在要有Windows 下的盘符概念。你在桌面上看到的硬盘都挂在 /Volumes 下。 比如接上个叫做 USBHD的移动硬盘,桌面上会显示出一个硬盘图标,它实际在哪里呢? 在终端里执行 ls /Volumes/USBHD, 看看显示出的是不是这个移动硬盘的内容。 根目录位置是 / 核心 Mach_ke

u011534664的专栏 580

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Mac OS X(10.5) 与BSD的差别

Mac OS X(10.5) 与BSD的差别

老桥的技术家园 8679
上一篇: 公共对话框——OPENFILENAME结构
下一篇: Mac 新手最容易犯的 30 項錯誤
ALENTAM
博客等级 码龄21年 17粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值