资讯详情

macOS终端命令实战:文件、进程与网络诊断全解析

📅 2026/10/11 6:11:53 | 华诺云谱 👁 阅读
macOS终端命令实战:文件、进程与网络诊断全解析
简介面向 OSX 系统用户与刚接触 Mac 终端的新手这份 PDF 将 Unix 文件系统核心概念浓缩为一份可随时查阅的命令手册。内容覆盖根目录与 /Volumes 挂载逻辑、文件通配符与大小写区分等基础常识并以 ls、cd、mkdir、cp、rm、chmod、chown 等高频命令为线索逐条给出参数说明与典型路径示例还补充了 nano 与 vi 文本编辑、脚本运行、获得 root 权限、修复磁盘权限等实用操作。全文仅 1 个 PDF 文件压缩包大小 52KB阅读轻量适合放在终端窗口旁对照练习。已有 1093 人学习下载对刚迁移到 Mac 或想系统梳理命令行操作的用户是一份高性价比的快速上手材料。1. Mac终端命令大全.pdf一份静态文档为什么值得反复翻如果你刚拿到《Mac终端命令大全.pdf》先别急着从头背到尾。终端命令这东西和编程语言不一样背完一周不用就忘干净真正派上用场的时候往往是某个下午服务起不来、磁盘满了、进程杀不掉你需要在五分钟内找到那条能救命又不会把系统搞坏的命令。这份PDF真正值钱的地方不是把命令罗列得多全而是它把 macOS 自带的 BSD 风格命令和日常运维场景做了配对——比如diskutil看磁盘、plutil查配置文件语法、brew services管后台服务这些是 Linux 常用命令手册里找不到的。适合三类人刚转 macOS 的开发新手需要一份离线速查日常要处理日志、文件、网络的运维以及想在终端里少踩坑的普通用户。这篇笔记不替你把 PDF 复述一遍而是按我的实际使用习惯告诉你哪些命令值得优先吃透、参数按什么逻辑记、以及 PDF 上常见的坑长什么样。文档是静态的但用法是活的。2. 先啃基础文件、权限与进程三条主线2.1 文件和目录操作别只记ls把ls -lh和find的配合练成肌肉记忆PDF 里文件操作部分占了不小篇幅但真正高频的其实就十几个命令。我在终端里最常用的是ls -lh-l看详细属性-h把文件大小格式化成 K/M/G而不是显示一长串字节数。看隐藏文件要加-a几乎每天都会用到因为 macOS 的很多配置就藏在~/.zshrc、~/.gitconfig这类点开头文件里裸ls看不到它们。find是另一个需要重点理解的对象。Linux 上常见的find /path -name *.log在 macOS 里同样可用但有个细节macOS 的find是 BSD 版本某些参数行为和 GNU 版本不完全一样比如-printf在 BSD find 里不存在。跨机器写脚本时如果发现find报错先怀疑是不是参数不兼容。下面是我日常排查时最常用的一套组合# 按文件名关键字定位忽略大小写只找文件不找目录 find ~/workspace -name *.log -type f 2/dev/null # 按修改时间找最近 3 天内改过的文件常用于「刚才改了配置文件但忘了改哪」的情况 find /etc -type f -mtime -3 2/dev/null # 按大小找大于 500M 的文件配合 du 排查磁盘占用 find ~/Library -type f -size 500M 2/dev/null这里2/dev/null是把无权限访问的目录报错丢进黑洞避免终端被 Permission denied 刷屏。-mtime -3表示 3 天以内-size 500M注意 M 是大写小于号改成-500M就能筛出小文件。这套命令在任何一台 macOS 上都原生可用不依赖额外工具。2.2 权限与属主ls -l第一列拆开看chmod别只会755PDF 里权限部分最容易被跳过因为大家总觉得chmod 777解决一切。但 macOS 上很多诡异问题恰恰出在权限上尤其是~/Library下的应用配置目录。ls -l输出的第一列长这样drwxr-xr-x第一个字符是类型d是目录-是普通文件l是符号链接。后面九位分成三组每组三位对应 owner / group / others 的读、写、执行权限。另一位工程师某次排查一个应用启动失败的问题查了半天发现是配置文件权限变成了664也就是 group 可写应用出于安全策略拒绝加载。所以不要无脑chmod 777先想清楚这三个角色到底谁需要读写。# 给当前用户添加执行权限属组和其他人不变 chmod ux script.sh # 递归给目录设置 755文件 644避免所有文件都被加执行位 find /path/to/dir -type d -exec chmod 755 {} \; find /path/to/dir -type f -exec chmod 644 {} \;第一条里的ux只改 owner 的执行位比chmod x更精准。后两条用find的-exec把目录和文件分别处理这是服务部署前的标准操作直接chmod -R 755会让所有普通文件也带执行权限虽然多数场景无害但不符合最小权限原则。2.3 进程与资源ps配top是基本功但lsof才是排障主力谈进程管理ps aux和top一般是 PDF 里的常客。ps aux能看到所有进程的参数列top -o cpu按 CPU 占用排序这些没问题。但我想多说一句的是lsof它才是 macOS 日常排障真正的高频工具。某个端口被占用、某个文件被哪个进程锁住、外接硬盘 unmount 不掉全是lsof的活。# 查 8080 端口被谁占用macOS 上最常见的排障命令 lsof -i :8080 # 查某个文件正被哪些进程打开常用于「卸载外置盘提示占用」 lsof /Volumes/ExternalDisk # 列出当前用户打开的所有网络连接 lsof -iTCP -sTCP:LISTENlsof -i :8080输出里第二列是进程 PID拿到 PID 后用kill -9 1234强制结束。-iTCP -sTCP:LISTEN只显示正在监听的 TCP 端口比直接lsof -i输出干净得多。要注意lsof在较新的 macOS 版本上对某些端口查询需要 sudo提示无权限的时候加上sudo再跑一次。进程这块PDF 给你的是一堆命令名但真正该记的是「端口占用了 →lsof -i→ 拿 PID → 确认进程 → 再 kill」这条完整链路。3. 文本处理与日常效率终端真正拉开差距的地方3.1grep过滤与-E扩展正则从「能找到」到「能找对」终端里有一半操作是在和文本打交道grep基本是所有命令里使用频率最高的一个。PDF 里 grep 部分通常会列一堆参数但重点值得记忆的是-r递归、-n显示行号、-i忽略大小写以及-E扩展正则。我自己的习惯是默认加-n因为查日志或代码时行号直接决定了下一步去哪个文件哪一行干活。# 在项目目录里递归搜关键字排除 node_modules 和 .git避免被无关文件刷屏 grep -rn TODO ~/workspace/myapp --exclude-dirnode_modules --exclude-dir.git # 用扩展正则同时匹配多个模式 grep -E error|failed|exception /var/log/system.log | tail -20 # 显示匹配行及其后 5 行适合看异常堆栈 grep -A 5 fatal /var/log/system.log第一条的--exclude-dir在代码搜索场景几乎是必须的否则 grep 会一头扎进 node_modules 里翻几千个文件。-A 5是 after 的缩写显示匹配行之后的 5 行排查崩溃日志时比单看一行匹配有用得多。另一个坑是 macOS 的 grep 和 Linux 上一样默认不支持\d表示数字想要\d的效果必须用[0-9]或加-P使用 PCRE但 BSD grep 的-P支持不稳定跨平台脚本里别依赖它。3.2sed替换按流处理awk按列拆解别把两者搞混PDF 的文本处理部分绕不开sed和awk这两个命令是新手最容易劝退的地方。我给一个实用的理解框架sed擅长「按行做替换和删除」awk擅长「按列做提取和统计」。改配置文件里的某个值用sed从日志里取某个字段做计数用awk。下面两个例子覆盖 90% 的日常需求# 把 config.txt 里的 localhost 替换成 127.0.0.1直接写回原文件macOS 需要加空字符串 sed -i s/localhost/127.0.0.1/g config.txt # 查看 access.log 里第 1 列通常是 IP排序后统计出现次数 awk {print $1} access.log | sort | uniq -c | sort -nr | head -20第一条里的-i 是 macOS 特有的写法Linux 上的sed -i后面不跟参数但 macOS 的 BSD sed 强制要求-i后必须跟一个备份文件后缀哪怕为空字符串。不加会直接报错这是跨平台脚本最常见的翻车点之一。第二条awk {print $1}默认以空格分列uniq -c统计行数最后的sort -nr是按数字逆序排head -20取前 20 条。这套管道组合几乎可以套用在任何「列统计」场景上。3.3 文件对比与校验diff看差异shasum验完整性日常还会遇到一类需求两个配置文件到底差在哪下载的文件是不是完整PDF 里一般会收录diff和md5但 macOS 上我更建议用shasum -a 256替代md5因为 SHA-256 的碰撞风险远低于 MD5现在很多软件官方只发布 SHA-256 校验值。# 对比两个文件只显示差异内容统一输出格式 diff -u old.conf new.conf # 计算文件的 SHA-256 校验值 shasum -a 256 Installer.pkg # 递归对比两个目录找出新增或删除的文件 diff -rq dirA dirBdiff -u输出的带上下文差异格式是通用标准Git 的 diff 也是这个风格读起来没有学习成本。-rq里的-r是递归-q是只报告哪些文件不同、不输出具体差异适合快速看目录同步有没有漏掉东西。这条命令在对比「本地代码和备份目录是否一致」时比rsync -n更直观。另外 macOS 上默认没有md5sum但md5命令是存在的和 Linux 的md5sum参数不同脚本里用到时要注意区分。3.4 终端效率习惯history别名和历史搜索能少敲一半字PDF 里关于终端本身的技巧往往藏在最后但这一部分对效率提升比任何单个命令都大。配合 macOS 默认的 zsh有几个习惯值得刻意练习。第一是历史命令搜索按Ctrl R进入反向搜索输入关键字就能回看之前敲过的长命令第二是给高频命令设置别名比如alias llls -lh、alias gsgit status这些写在~/.zshrc里重开终端就生效。# 查看最近 20 条历史命令 history 20 # 在当前会话临时设置别名只对这次终端窗口有效 alias llls -lh # 用 grep 从历史命令里快速捞某条命令的完整写法 history | grep shasum对历史命令用grep过滤比Ctrl R更直接适合知道自己用过、但记不清完整参数的情况。别名写到~/.zshrc后别忘了source ~/.zshrc或重开终端窗口。这些习惯每省几秒钟一天几十次操作积累下来是相当可观的时间。命令行效率从来不是某一个命令的技巧而是这些小习惯叠起来的复利。4. 网络与系统诊断章节目录之外PDF 含金量最高的部分4.1 本地网络排查四件套ping、curl、dig、ncPDF 里网络部分放了一堆命令但如果只看四个我会选ping、curl、dig、nc。ping检查网络通不通现在基本用于查「到网关通不通」这类本地链路问题持续发包用ping -c 4限次数无限期ping反而没有意义。curl是接口调试主力连本地服务测试响应头、用-I只取 HEAD、用-v看握手细节都是高频操作。# 查看本机路由信息确认默认网关 netstat -rn | grep default # 测试本地服务是否存活只看响应头不过多拉取内容 curl -I http://localhost:3000 # 检查本机 DNS 服务器归属排查域名解析异常 scutil --dns | head -20netstat -rn | grep default是查网关的经典组合default那一行就是默认路由。curl -I只请求头部不下载正文验证一个服务是否存活这是最快的方式。scutil --dns会输出当前系统的 DNS 配置和搜索域比cat /etc/resolv.conf靠谱因为 macOS 的 DNS 配置由系统管理直接读resolv.conf往往看不到真实结果。4.2 端口与连接状态lsof之外还需要netstat和nc接上一节网络排障的另一个方向是查端口和连接状态。lsof -i :8080已能解决「端口被谁占了」但有时候需要看全部监听端口、或者测试一个端口是否通这就轮到netstat和nc上场。macOS 的netstat参数是 BSD 风格常见写法是netstat -an | grep LISTEN-a显示所有连接-n不做反向域名解析否则等待 DNS 超时能把人急死。# 列出所有正在监听的 TCP 端口 netstat -an -p tcp | grep LISTEN # 测试到某台机器的某个端口是否连通 nc -vz 192.168.1.1 22 # 查看某个进程的所有网络连接lsof 的补充视角 lsof -p 1234 -inc -vz里-v输出详细信息-z只做探测不发送数据用来测端口连通性非常干净。返回succeeded表示端口通Connection refused表示端口没服务no response表示被防火墙拦截。lsof -p 1234 -i按 PID 反查网络连接适合定位「某个进程为什么卡在网络请求上」这类问题。网络排障的顺序我一般固定为先ping网关确认链路再netstat看端口监听再nc测连通最后lsof精确定位到进程这条链路能覆盖九成以上的本地网络问题。4.3 磁盘与系统资源df只看剩余不够du才能定位谁占满了磁盘满是最常见的线上事故之一PDF 里df -h一般会被列在显眼位置但真正麻烦的不是知道满了而是不知道被谁占满的。df -h看的是文件系统级别的剩余空间du才能逐级拆解目录占用。macOS 上有个特有的麻烦~/Library目录体积可能超乎想象缓存、容器、日志全堆在里面。# 查看根目录下各目录占用空间按大小排序 du -sh /* 2/dev/null | sort -hr # 深入看当前目录第一层各子目录的大小定位大文件 du -sh ~/Library/* 2/dev/null | sort -hr | head -15 # 找到当前目录下最大的 10 个文件 find . -type f -exec du -h {} 2/dev/null | sort -hr | head -10du -sh第一个参数是摘要模式只显示总计配合通配符加上sort -hr按人类可读大小逆序排一眼就能看到哪个目录最肥。第三条命令用find把所有普通文件的大小算出来再排序取前 10这是定位「某个超大文件躺在哪」最直接的方式。另外 macOS 上du的默认单位是 512 字节块而非 KB加上-h参数后显示为 K/M/G 才直观。磁盘清理还有一个容易忽略的方向本地 Time Machine 快照tmutil listlocalsnapshots /能看到系统自动生成的本地快照它们会悄悄吃掉大量磁盘空间。4.4 系统日志与配置log show统一入口plutil验证配置文件macOS 的系统日志机制和 Linux 不同没有/var/log/messages这类传统文件在较新的系统上统一走log命令。log show配合--last和--predicate参数可以按时间窗口和关键字过滤比在 Console.app 图形界面里翻半天高效得多。# 查看最近 10 分钟内所有错误级别的日志 log show --last 10m --predicate messageType error # 按进程名过滤日志排查某个应用崩溃原因 log show --last 1h --predicate process mdworker | tail -50 # 验证 plist 配置文件格式是否合法检查语法错误 plutil -lint ~/Library/LaunchAgents/com.example.plistlog show --last 10m是时间窗口messageType error只取错误级别把噪音压到最低。process mdworker按进程名过滤适合盯着某个特定组件排查。plutil -lint是 macOS 特有的配置文件语法检查工具写 LaunchAgent 或修改偏好设置前先 lint 一次能避免语法错误导致服务拒绝加载。日志与配置这块PDF 里往往只列出命令不强调使用场景但实际上log show的过滤参数搭配才是日常排查的真正利器值得专门花时间研究一次。log --help输出里的示例非常详细配合man log看一遍收获远比在 PDF 里背命令大。5. 这份 PDF 最容易踩的五个坑背完命令却翻车的经典现场5.1 现象照着笔记执行rm -rf误删了家目录内容原因PDF 或笔记里出现rm -rf这类强制删除命令新手只记住了-rf是递归强制没意识到~展开后指向的是整个用户目录。尤其当命令写成rm -rf ~ /some/path波浪号后面多了一个空格shell 会把~展开成/Users/当前用户名于是整个家目录被删除。这个问题在 macOS 上不会有任何二次确认提示。解决在任何删除操作前先echo展开路径确认再执行。echo ~看看实际指向哪里。能不用-f就不用先rm -r让系统逐个确认。更稳妥的做法是养成交作业前把路径写绝对路径的习惯不要依赖~展开。5.2 现象网上抄的 Linux 命令在 macOS 上报invalid option原因macOS 的命令行工具是 BSD 版本和 Linux 的 GNU 版本存在参数差异。典型案例是sed -i直接报错find的-printf不存在wc -l行为一致但du的默认单位不同top的交互参数也不同。另外 macOS 的系统自带 Python 是 2.x 时代遗留很多 Linux 教程里的python3命令在旧版本上不存在。解决先man对应命令确认当前系统的参数写法不要默认 Linux 教程里的一定能在 macOS 上跑。写跨平台脚本时尽量用awk、grep、sed三者的 POSIX 子集也就是-E正则和基本替换语法避免使用\d、{n,m}这类 GNU 扩展。安装 GNU 版本命令可以通过brew install coreutils然后使用gsha256sum、gsed这些g前缀版本但这等于给自己制造额外维护成本脚本要在多平台跑时不如直接用 POSIX 语法。5.3 现象Ctrl C杀不掉某个进程用kill -9也没反应原因kill -9是 SIGKILL 信号正常情况下能杀掉进程但有一种例外是进程处于不可中断的内核态睡眠比如等待磁盘 IO 或网络资源此时-9也无法立即终止。另一种常见情况是kill的 PID 不对ps aux里看到的是子进程真正占用资源的是它的父进程。macOS 上还有个特殊情况某些系统进程受SIPSystem Integrity Protection系统完整性保护约束即使sudo kill -9也无权终止。解决先用ps -ef看进程树找到父进程 PID。pgrep -f 关键字按命令行参数搜进程比ps | grep更准确。确认无误后在kill前先发TERM信号默认就是 TERM给进程一个优雅退出清理资源的机会。kill -9永远放在最后一步因为它不给进程任何清理临时文件或释放锁的机会容易留下后遗症。针对 SIP 保护的进程思路不是强杀而是理解它为什么存在比如mds是 Spotlight 索引服务占 CPU 时应该排查是否在进行大规模索引而不是试图终止它。5.4 现象source ~/.zshrc报错或者终端启动变慢原因~/.zshrc里堆积了大量别名和状态判断逻辑每次打开终端窗口都要执行一遍。更隐蔽的问题是某些别名或函数名与命令名冲突比如给cd定义了别名在脚本里调用时行为完全不符合预期。某开发者的~/.zshrc里写了超过 200 行配置每次新开终端都要卡 2 秒最后发现是一行过时的nvm初始化脚本在拖慢启动。解决配置尽量精简能用环境变量解决的不写函数。把~/.zshrc拆成~/.zshrc交互式配置和~/.zshenv环境变量交互式别在~/.zshenv里做输出。排查启动慢时在~/.zshrc顶部和底部各加一行echo start: $(date %s)逐步二分注释掉可疑配置块直到定位到拖慢启动的那几行。别名和函数命名避免和系统命令重名脚本里要用原始命令时写全路径/bin/cp、/usr/bin/grep更安全。5.5 现象brew install后命令找不到提示command not found原因Apple Silicon 架构下 Homebrew 默认安装目录是/opt/homebrew/binIntel 架构下是/usr/local/bin如果 shell 的PATH里没有对应路径安装再多的包也无法直接调用。此外某些包的二进制不自动链接到/usr/local/bin需要手动配置。解决先确认当前机器的架构uname -m输出arm64是 Apple Siliconx86_64是 Intel。然后检查对应目录是否存在且已加入PATH。在~/.zshrc里加上# Apple Silicon 的 Homebrew 路径 export PATH/opt/homebrew/bin:$PATH # 部分工具需要额外设置的路径比如 ruby、node 版本管理工具 export PATH/opt/homebrew/opt/node22/bin:$PATH改完source ~/.zshrc后再which 命令名验证。另一个容易忽略的点是brew自身安装时的输出末尾就附带了两行echo提示很多人顺手就关掉终端没执行下次重启终端后zsh不会重新加载当时的 session所以配置始终没生效。遇到command not found先echo $PATH看一眼绝大多数情况都是路径问题而不是包没装上。6. 把这本 PDF 变成你自己的命令手册一套持续进化的整理方法PDF 是静态的但终端命令的生态是动态的。拿到 PDF 之后最值得做的事不是从头到尾读一遍而是用自己的实际场景重新组织它。我建议按「排查路径」而不是「命令字母序」来重组因为字母序适合查阅但不适合大脑记忆。真正能被记住的命令永远是你在事故现场亲手用过的那几条。具体操作上我会把 PDF 里的命令拆成三类放入自己的速查笔记。第一类是高频命令比如ls -lh、grep -rn、lsof -i、du -sh这类不需要记参数因为每天都用。第二类是低频但关键的命令比如文件系统快照、磁盘修复、SIP 查询这类要记完整语法和适用版本。第三类是曾经踩过坑的命令每条附带一个「为什么我当时做错了」的批注这比 PDF 里的标准说明有用得多。整理完后遇到新问题第一反应是翻自己的笔记而不是搜索引擎因为笔记里的每一条都过滤过「能不能用」和「在这台机器上版本对不对」。如果你的 PDF 有目录书签按任务场景重新标记一下章节定位会更实用。把「文件传输」「磁盘管理」「网络诊断」「进程管理」做成顶层分类每个分类下只保留自己真正会遇到的命令其余全部忽略。终端命令的覆盖面极广但个人日常涉及的往往只有 20% 左右把这 20% 吃透比泛读 100% 更有效。最后再提一个验证方法拿到任何一条不熟悉的命令先man 命令名看完整文档再用命令名 --help快速确认参数最后在安全目录里造一个测试文件实际跑一遍。命令这种东西看十遍不如敲一遍敲过一遍之后PDF 对你来说才真正从参考书变成了工具书。血泪经验告诉我终端命令的掌握程度从来不是按命令数量衡量的而是看你在事故现场能想起来的有效命令有多少条。希望帮到你。本文还有配套的精品资源点击获取
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑