
从 Windows 或 Linux 转过来用 macOS 的人大多会经历一个阶段桌面点得挺顺但一涉及文件路径、装软件、查系统问题就开始满屏找按钮。这不是你笨而是 macOS 的底层逻辑决定了它更适合用命令行来理解和控制。macOS 的底层是 Darwin一个继承自 BSD 的 Unix 系统所以那个藏在启动台里的终端Terminal才是真正管着这台机器的东西。这篇文章我打算把 macOS 的命令行操作和常见系统知识串起来讲透覆盖文件管理、软件安装、进程网络、存储清理、系统重装这些高频场景适合刚切换到 macOS 的朋友也适合用了一两年但还是靠鼠标走天下的用户。1. 先搞懂 macOS 的底子命令行才不迷路1.1 从 Darwin 说起为什么 macOS 像 Linux 又不一样我第一次在 macOS 终端里敲ls、grep、ps的时候第一反应是这不是 Linux 吗后来才搞清楚macOS 的内核叫 XNU整体系统叫 Darwin它是从 BSD Unix 分支出来的。Unix 这个血统决定了三件事命令行的基本操作和 Linux 高度一致文件权限模型沿用了 POSIX 那套进程管理、网络工具也几乎同源。但注意一致不代表完全相同。你在 Linux 上养成的不少习惯到 macOS 上得改一改。典型的就是命令版本差异macOS 的sed是 BSD 版本-i参数必须写成sed -i s/old/new/g file少写一个空字符串参数就会报错macOS 的find默认不支持-printf想按大小排序输出得用du配合sort。这类差异平时不显眼写脚本的时候能卡你半小时。还有一点很有意思macOS 真的自带一个完整的命令行环境但不自带 Linux 那套文件系统结构。你在根目录/下能看到Applications、Users、System、Library这些目录它们跟 Linux 的/etc、/var、/usr布局完全不一样。这其实是一层非常聪明的包装把 Unix 的内核和面向普通用户的文件目录结合到了一起理解了这一层后面用命令行才不容易被路径搞晕。1.2 目录结构和软件安装这件事macOS 里没有 Windows 那种安装到 C 盘 Program Files的概念也不像 Linux 那样全靠包管理器把文件散到/usr/bin、/etc各个角落。macOS 的软件基本就是一个个.app文件夹里面是完整的程序包双击就能跑。命令行下你会常用的几个目录/系统根目录/Users/你的用户名/你的家目录终端里用~表示也就是cd ~能直达的位置/Applications图形界面应用都在这/System/Library、/Library系统和全局库文件日常操作基本别碰/usr/local、/opt/homebrewHomebrew 安装的软件默认落在这两个地方所以命令行装软件这件事思路跟 Windows 完全不同。你在终端执行open -a Safari能打开应用本质是因为/Applications/Safari.app这个包里有个可执行文件。平时我判断一个 app 装没装直接用命令行看一眼/Applications目录就行比在启动台里翻快多了。1.3 权限模型sudo 和 su 的那些坑macOS 默认不让你直接用 root 账户登录日常操作全用普通用户。终端里需要管理员权限的时候几乎只会用到sudosudo ls /System输入密码时不会显示任何字符这是正常的别以为键盘坏了。而su这个命令在 macOS 上就比较尴尬了——Linux 里su root切到 root 账户很好用macOS 默认 root 账户是锁定的直接su root会提示su: Sorry。正确的解锁方式是用sudo passwd root设置密码但我建议你没必要做这一步用sudo逐条执行远比切到 root 干一堆事安全。还有一点macOS 有个叫 SIPSystem Integrity Protection的机制从 El Capitan 开始引入专门保护系统目录。即使用sudo给了 root 权限你也删不掉/System下的系统文件。第一次遇到这种明明我是 root 还删不了的情况会觉得很憋屈但这个机制救了无数台 Mac别去关它。2. 把终端调成能用、好看的样子2.1 打开终端前要明白的事打开终端最简单的方式按Command 空格输入Terminal回车。也可以去访达 - 应用程序 - 实用工具里找到它。我后来换成了 iTerm2用 Homebrew 安装后面会讲因为分屏、标签页、热键唤出这些功能确实更好用。打开终端后先看一件事当前 shell 是什么。Catalina10.15之后macOS 默认 shell 从 bash 换成了 zsh因为老版 bash 停留在 3.2 版本太老了。运行echo $SHELL如果输出/bin/zsh说明你已经在用 zsh。如果不是执行chsh -s /bin/zsh然后重新打开终端。这一步是接下来所有终端体验优化的基础。2.2 装上 Oh My Zsh终端立刻变顺手默认的 zsh 其实已经很能打补全、通配符、历史命令搜索都有但想让它真正好用我会直接上 Oh My Zsh 这个框架。安装命令是sh -c $(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)如果你在国内网络环境下拉取 GitHub raw 文件特别慢搜一下oh my zsh gitee 镜像有现成的国内镜像脚本思路完全一样。装完之后配置文件在~/.zshrc这是你之后所有人性化设置的入口。装完第一件事改主题。默认主题 robbyrussell 太朴素我用了很长时间的 agnoster后来换了 powerlevel10k信息密度和颜值都高。powerlevel10k 安装要单独两步先克隆仓库到~/.oh-my-zsh/custom/themes/再在~/.zshrc里把ZSH_THEME改成powerlevel10k/powerlevel10k。但注意这类主题大量使用特殊字符终端字体不支持的话全是乱码方框你会以为装坏了。解决办法是装一个 Nerd Fonts 字体比如 MesloLGS NF然后去终端的偏好设置里把字体切过去。插件部分我必装三个zsh-autosuggestions灰色历史命令提示按右键补全、zsh-syntax-highlighting命令输错了直接标红、zsh-completions增强补全。安装方式是克隆到~/.oh-my-zsh/custom/plugins/然后在~/.zshrc的plugins(git ...)里加上名字重启终端生效。2.3 HomebrewmacOS 上最重要的包管理器没有 Homebrew 的 macOS 命令行就像没有应用商店的 iPhone 一样难受。它解决的核心痛点是命令行工具和软件包的安装、升级、卸载全部集中管理。官方安装命令/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)很多人问 macos 安装 brew 要多久这个真看网络快的一两分钟慢的卡在更新阶段能等半小时。如果卡太久同样是替换国内镜像源。Apple Silicon 芯片的 Mac 装完之后系统会提示你执行一段echo eval $(/opt/homebrew/bin/brew shellenv) ~/.zprofile的命令这是把 brew 加进 PATH别跳过。brew 的日常使用我总结成一张常用操作表需求命令搜一个软件brew search telnet安装命令行工具brew install wget ffmpeg telnet安装图形应用brew install --cask google-chrome iterm2查看已安装列表brew list更新软件库brew update升级所有软件brew upgrade清理旧版本brew cleanup想装 telnet 这类 macOS 早就不自带的工具brew install telnet一步到位。ffmpeg 处理视频音频brew install ffmpeg也是标配。可以说只要你在终端里command not found第一反应应该是问 brew 有没有这个包而不是去网上乱下载二进制文件。3. 日常操作里最高频的命令清单3.1 文件与目录从反直觉到顺手macOS 的 Finder 其实已经很好用了但有时候命令行更快。我日常最常用的就是这几个pwd # 我在哪 ls -la # 当前目录有什么隐藏文件也显示 cd ~/Desktop # 切到桌面macOS 目录名里有空格是常态比如Macintosh HD、Application Support。命令行里记得加反斜杠转义或者用 Tab 补全cd Application\ Support或者输入cd App后按 Tab让 shell 帮你补全。比 Linux 多出的一个神器是openopen . # 用访达打开当前目录 open -a Safari # 打开指定应用 open -e ~/.zshrc # 用文本编辑打开文件 open ~/Downloads/report.pdf # 用默认应用打开文件open命令的本质是用 GUI 的方式打开东西这也是 macOS 命令行最独特的地方。另外一个很值得用的命令是mdfind它是聚焦搜索Spotlight的命令行接口mdfind -name 简历比find快得多因为它走的是系统索引。想找文件内容里包含某个关键词的文件mdfind 关键词也能做到。复制、移动、删除这些基础操作cp、mv、rm和 Linux 完全一样但有个参数你得记住cp -R复制文件夹rm -rf删除文件夹。rm -rf这命令一定要看清楚再回车我见过太多人把~写错位置结果把整个家目录删了。3.2 进程、磁盘与网络系统资源三大件排查电脑为什么卡这件事Mac 上图形界面用活动监视器命令行则更直接top # 动态看进程和 CPU ps aux | grep 进程名 # 找具体进程 kill -9 1234 # 强杀 PID 为 1234 的进程 pkill -f 进程名 # 按名字杀我的习惯是先ps aux | grep python找到 PID再kill -9。注意kill -9是最后手段会让进程来不及保存数据优先用普通kill不行再上-9。网络排查是 macOS 命令行比 Windows 舒服的地方ping baidu.com curl -I https://example.com dig example.com nslookup example.com lsof -i :8080 # 查 8080 端口被谁占用 netstat -an | grep LISTEN # 看哪些端口在监听lsof -i :8080绝对是开发者的救命命令。Mac 上动不动就有进程占着 8080 端口一条命令找到 PID然后kill -9干掉比去活动监视器里一个个找快太多。磁盘和存储df -h # 看各卷剩余空间 du -sh ~/Library/Caches # 看某个目录占用多大 du -sh * | sort -h # 当前目录所有子目录按大小排序du -sh * | sort -h这条组合命令我几乎每周都用。找个大目录进去执行一次就能从上到下看到底是谁在吃磁盘。很好用但也可能输出一大堆配合head -20只看前面 20 行就行。3.3 用命令行改系统偏好设置macOS 有些设置项藏得很深命令行反而一条命令搞定。核心命令是defaults它可以直接读写系统偏好设置。最经典的场景是显示隐藏文件defaults write com.apple.finder AppleShowAllFiles -bool true killall Finder执行完 Finder 会重启隐藏文件全部显示。去掉隐藏文件就把true改成false再执行一遍。还有几个日常用得到的softwareupdate -l列出软件更新softwareupdate -i -a安装所有更新pmset -g batt查看电池状态sips -z 800 600 image.png快速改图片尺寸system_profiler SPHardwareDataType查看硬件型号和序列号sips是 macOS 自带的图像处理工具批量缩放、格式转换都能做。比如把一张 PNG 改成 JPEGsips -s format jpeg input.png --out output.jpg不需要安装任何第三方软件这是 macOS 打包在系统里的实用小工具很多人用了三年 Mac 都不知道它存在。4. 高频问题排查实录4.1 macOS 系统数据占用过大怎么清理几乎每隔几个月就会有人问存储空间里系统数据这一项占了上百 GB怎么删这个问题的根源是 macOS 把所有不属于用户文件的系统缓存、日志、快照全都归类到了系统数据里。想定位具体大头命令行是最有效的工具。按我的排查顺序来。先看缓存du -sh ~/Library/Caches/* | sort -h~/Library/Caches是应用缓存目录清掉完全不影响数据顶多应用下次启动重新生成缓存。挑出来几百 MB 的项目手动删掉一般能腾出好几个 GB。然后是用户级数据du -sh ~/Library/Application\ Support/* | sort -h这里才是大头微信聊天记录、钉钉文件、浏览器用户数据全在这。看到哪个应用占了几十 GB进到具体目录里删掉没用的文件或者直接在应用的设置里清理缓存。还有两个隐蔽的大户。一个是 Time Machine 本地快照。如果你开启了 Time Machine但没有外接备份盘macOS 会在本地存一些历史快照关键时刻能救命但也会吃掉大量空间。查看和删除tmutil listlocalsnapshots / tmutil deletelocalsnapshots 2025-01-01-123456另一个是开发者工具缓存~/Library/Developer/Xcode/DerivedData搞 iOS 开发的都知道随便清理一下就能释放十几 GB。最后是日志macOS 的日志文件散落在~/Library/Logs和/private/var/log。一般日志不会特别大但如果你运行的服务比较多日积月累也能占几个 GB看到大文件直接删没有风险。4.2 重装 macOS 的那几个坑重装 macOS 本身不复杂但准备更新时出错安装器验证失败这类报错能折腾人一整天。我总结的经验是重装前先分清楚两种场景直接升级系统和抹盘重装。抹盘重装的标准路径是重启电脑Intel 芯片按住Command R进入恢复模式Apple Silicon 芯片长按电源键在启动选项里选选项。然后打开磁盘工具把主磁盘抹掉成 APFS 格式再重新安装 macOS。注意一点在 Apple Silicon 机器上抹盘前最好确认你已经知道怎么用启动转换之外的方式恢复因为抹掉磁盘后这台机器就没系统可用了恢复全靠网络下载网络差的时候很痛苦。重装时报错的常见原因我遇到最多的是系统时间不对。恢复模式里如果没有正确读取到时间终端工具和系统安装器的 HTTPS 请求会失败。解决办法是打开恢复模式顶栏的实用工具 - 终端手动校准时间date 0325120025这串数字的格式是月日时分年上面例子表示把时间设置成 2025 年 3 月 25 日 12:00。执行完再重新运行安装器大概率就能过。还有一点网上流传的各种 macOS 系统镜像 ISO除非你是在虚拟机上折腾否则完全不建议下载安装。macOS 官方就支持从恢复模式直接网络安装或者用 App Store 下载完整安装器没必要冒着校验失败、系统不完整的风险去装第三方打包的镜像。4.3 从 Windows 迁移过来的人命令行习惯对照如果你是从 Windows 转过来的终端里最容易犯的错是把习惯一并带过来。我列一张对照表贴在终端旁边看几天就适应了Windows 习惯macOS 等价操作C:\盘符/根目录\路径分隔符/路径分隔符dirls -lcopycpipconfigifconfig或ipconfig getifaddr en0取 IPping -t持续 pingmacOS 默认持续 ping加-c 3指定次数taskkill /F /PID 1234kill -9 1234notepad file.txtopen -e file.txt按CtrlC复制CommandC复制但终端里的中断操作仍然是CtrlC最后一行尤其容易混。macOS 图形界面里所有快捷键基于 Command 键但在终端里CtrlC是中断当前命令、CtrlD是发送 EOF 退出登录、CtrlA移到行首这些 terminal 的老规矩被完整保留下来了千万别用 CommandC 去中断程序那只是在终端里复制了一段文字而已。键盘也值得提一句如果外接 Windows 键盘苹果键盘的 Command 键对应 Windows 键。在终端里一个健忘点就是你想输入~波浪号找半天其实在 Mac 键盘上是Shift 键的位置数字 1 左边中英文切换键上方。4.4 关于虚拟机和开发环境热搜词里很多人搜虚拟机安装 macOS如果你只是想在 Mac 上测试系统用 UTM 或 Parallels Desktop 这类虚拟机是最稳妥的方案注意别去非 Apple 硬件上强行安装 macOS一方面是体验差另一方面驱动和稳定性都会成问题。开发环境方面macOS 对开发者的友好程度是出了名的高。Xcode Command Line Tools 装完之后git、clang、make全都有了。装它的命令xcode-select --install这是很多后续安装的前置条件。例如装 Homebrew 时没有它会缺少一堆编译工具。另外很多从 Linux 迁移过来的朋友会问macOS 有包管理为什么没有apt-getHomebrew 就是 macOS 世界的apt。brew install对应apt installbrew upgrade对应apt upgrade。习惯了这一套开发环境搭建基本无痛。5. 我这两年总结出来的避坑清单5.1 给命令行一个后悔药没有经验的用户最怕命令删除文件因为删了就没了。macOS 的rm命令不会经过废纸篓直接物理删除。所以建议所有刚接触命令行的人先做一件事给rm配置一个安全别名。在~/.zshrc里加一行alias rmrm -i这样每次删除文件前都会让你确认多一步确认能救回无数误删文件。另一个习惯是能用mv把文件移到一个临时目录代替rm的就先移过去确认没问题再删。我在服务器上处理重要数据时一直用这个方法成本极低效果极好。还有~/.zsh_history这个文件记录了你所有终端历史命令如果哪天不小心执行了一条破坏性命令马上去看历史还能定位你做了什么也不至于完全抓瞎。5.2 终端体验的几个加分项最后讲几个能明显提升终端幸福感的小配置。第一是终端配色方案。macOS 默认的终端主题白底黑字看久了眼睛特别累。我推荐装 iTerm2 之后用 Solarized Dark 或者 Dracula 配色。如果你用系统自带终端也可以在偏好设置里把背景改成深色不刺眼。第二是字体。macOS 自带的等宽字体里我最喜欢的是 SF Mono 和 Menlo后者和 JetBrains Mono 一样非常适合写代码。甚至有不少 WSL 里写代码的朋友在找接近 macOS 的字体的体验——其实就是找一款等宽、带编程连字、中文显示不糊的字体比如 JetBrains Mono、Source Code Pro 都行装了之后去终端的字体设置里选上整个终端的精气神都不一样。第三是终端复用。tmux是我离不开的工具之一它让你在一个终端窗口里开多个会话断开 SSH 后任务继续跑。安装很简单brew install tmux然后tmux new -s work开新会话CtrlB加C开新窗口CtrlB加D离开会话下次tmux attach -t work还能回去。这个工具对远程服务器操作来说简直是神器。其实终端这条路刚上手时总是觉得有图形界面为什么还要学命令行但用顺了之后你会发现命令行追求的不是炫技而是把重复操作变成一句话、一个别名、一段脚本把时间花在真正重要的事情上。我自己最值的习惯是把常用的命令写进一个 markdown 文件每周整理一次三个月后基本就不再翻文档了因为肌肉记忆已经形成。希望这篇文章能帮你少走点弯路把 macOS 这台机器真正用明白。