摘要:
ls、cd、git、npm——这些是每个程序员在终端里的肌肉记忆。但除了这些日常命令,macOS 终端还隐藏着一批能大幅提升效率但鲜为人知的命令:从du -sh的进阶用法到mdfind的 Spotlight 搜索、从caffeinate防止熄屏到pbpaste直接操作剪贴板。本文整理了 10 个程序员高频场景下的进阶命令,每个附使用场景和示例。文末给出一个"文件夹大小速查"的终端 vs 图形化对比——什么时候用命令、什么时候用 SpacePeek。
本文信息:基于 macOS 15.0 Sequoia / zsh 环境。所有命令均为 macOS 系统自带,无需安装任何第三方工具。
一、前言
你每天敲几百次终端命令,但你可能只用了终端 10% 的能力
我观察过身边的程序员同事——他们的终端操作大致分为三类:
cd进目录、ls看文件、git操作版本npm install/pip install装依赖- 上下箭头反复翻历史命令
这些是终端的基本操作,不是终端的"能力"。终端的真正能力在于——它是 macOS 最强大的文件管理、系统控制、自动化工具。以下 10 个命令,每一个都对应一个你每天遇到的真实场景。
二、10 个进阶命令
命令 1:du -sh * | sort -rh | head — 一秒找出当前目录最大的文件
场景:你进入 ~/Downloads,想知道哪个文件最大。或者你怀疑 node_modules 里某个包特别臃肿。
基础用法:
du -sh * # 列出当前目录下每个文件/文件夹的大小
进阶组合:
du -sh * | sort -rh | head -10 # 按大小降序排列,只显示最大的 10 个
解释:du -sh 计算每个项目的大小(-s 汇总,-h 人类可读),sort -rh 按数字降序排列(-r 反向,-h 人类可读数字),head -10 只取前 10 行。
什么时候用命令,什么时候用 SpacePeek:如果你已经在终端里了,du -sh * | sort -rh 比切换到 Finder 再按空格更快。但如果你在 Finder 里浏览文件,SpacePeek 按空格比开终端 cd 过去再敲命令快。两者不冲突——一个适合终端流,一个适合 Finder 流。
命令 2:mdfind — 用 Spotlight 引擎搜文件,但比 Spotlight 快
场景:Spotlight 的 GUI 搜索有时候很慢,而且你只能在那个小窗口里看结果。你想在终端里搜、用管道过滤、或者导出搜索结果。
mdfind "kind:pdf 合同" # 搜所有 PDF 文件,文件名包含"合同"
mdfind "kMDItemDisplayName == '*2025*'" # 搜文件名包含 2025 的文件
mdfind -onlyin ~/Documents "会议" # 只搜 Documents 目录
为什么比 Spotlight 好用:mdfind 的结果可以直接管道给其他命令。比如你想把所有搜索结果复制到某个文件夹:
mdfind "kind:pdf 2025" | xargs -I {} cp {} ~/Documents/2025_PDFs/
霸道的查找能力 + 管道的组合能力 = 终端搜索的终极形态。
命令 3:caffeinate — 让 Mac 在你离开时保持清醒
场景:你在跑一个需要 30 分钟的脚本,合上 MacBook 屏幕想去喝杯咖啡——但合盖之后脚本暂停了。
caffeinate -i python long_running_script.py # 运行脚本期间防止系统休眠
caffeinate -d # 防止显示器休眠
caffeinate -t 3600 # 保持清醒 1 小时
常用组合:
caffeinate -i -d npm run build # 跑构建时防止系统和显示器休眠
不需要去系统设置关节能模式,不需要下载什么"防休眠"App,系统自带。
命令 4:pbpaste / pbcopy — 命令行直接操作剪贴板
场景:你想把一段命令的输出结果直接复制到剪贴板,或者把剪贴板的内容直接粘贴到终端里。
pbpaste # 把剪贴板内容输出到终端
pbpaste | wc -w # 统计剪贴板里有多少个单词
cat file.txt | pbcopy # 把文件内容复制到剪贴板
pbpaste | jq . # 把剪贴板里的 JSON 格式化输出
程序员最常用的场景:从 Postman 复制了一段 JSON 响应,想快速格式化看一看:
pbpaste | jq . | less
不需要新建文件、粘贴、保存、打开。终端里一行搞定。
命令 5:!! 和 !$ — 重用上一条命令
场景:你敲了一条需要 sudo 的命令但忘了加 sudo,然后报错"Permission denied"。你不想重新敲一遍。
rm -rf /some/protected/dir # 报错:Permission denied
sudo !! # 等于 sudo rm -rf /some/protected/dir
!$ 的用法:
mkdir /very/long/path/that/you/dont/want/to/type/again
cd !$ # 等于 cd /very/long/path/that/you/dont/want/to/type/again
解释:!! 是上一条完整命令,!$ 是上一条命令的最后一个参数。这两个是 Bash/Zsh 的特性,不是独立命令,但每天能帮你省下几十次重复输入。
命令 6:open — 从终端打开任何东西
场景:你在终端里操作文件,想用 Finder 打开当前目录,或者用 VS Code 打开当前项目。
open . # 在 Finder 中打开当前目录
open -a "Visual Studio Code" . # 用 VS Code 打开当前目录
open report.pdf # 用默认应用打开 PDF
open -a Safari https://github.com # 用特定浏览器打开 URL
最常用的组合:open .——在终端里翻了半天文件,想切回 Finder 看一眼。一行命令,不用手离开键盘去找 Dock 上的 Finder 图标。
命令 7:lsof -i — 看谁在占用端口
场景:你启动一个本地服务,报错"端口 3000 已被占用"。你不知道是谁占的。
lsof -i :3000 # 查看占用端口 3000 的进程
lsof -i TCP:3000 # 只看 TCP 连接
进阶:一键杀掉占用端口的进程:
kill $(lsof -t -i :3000) # -t 只输出 PID,直接 kill
比打开活动监视器 → 搜索 → 找到进程 → 强制退出快得多。
命令 8:find 不是唯一选择 — fd 更现代,但系统自带 mdfind 也够用
场景:你想在当前目录下递归搜索所有 .log 文件。
系统自带的方法:
find . -name "*.log" -type f
为什么 find 的语法这么难记:find 的参数顺序和大多数现代命令行工具相反——路径在前,表达式在后。如果你只想快速找一个文件,在终端里打 find 十次有八次忘掉 -type f。
如果你的 Mac 装了 Homebrew:
brew install fd
fd "\.log$" # 和 find . -name "*.log" -type f 等价,但语法简单得多
但是:fd 需要安装。如果你不想装任何东西,mdfind(命令 2)在大多数场景下比 find 更快,因为它用的是 Spotlight 索引而不是实时遍历。
命令 9:history | grep — 找回你 3 天前敲过的那条命令
场景:你 3 天前敲了一条很长的 docker run 命令,参数复杂,你不想重新敲一遍。但你按上下箭头翻了 30 秒还没找到。
history | grep docker # 搜索历史中包含 docker 的所有命令
history | grep "git push" | tail -5 # 最近 5 次 git push
进阶:直接用历史编号执行:
history # 查看历史,每条前面有编号
!1234 # 执行编号为 1234 的命令
更进一步:在 .zshrc 里加一行 setopt HIST_IGNORE_DUPS,重复的命令不会在历史记录中占多行——你翻历史的时候会干净很多。
命令 10:defaults — 修改 macOS 的隐藏设置
场景:你想让 Finder 显示隐藏文件(.xxx 开头)、让 Dock 只在鼠标悬停时出现、让截图保存为 JPG 而不是 PNG——这些设置 macOS 的 GUI 里没有。
# 显示 Finder 隐藏文件
defaults write com.apple.finder AppleShowAllFiles -bool true
killall Finder
# 截图保存为 JPG(体积更小)
defaults write com.apple.screencapture type jpg
# Dock 只在鼠标悬停时出现
defaults write com.apple.dock autohide-delay -float 0
killall Dock
恢复默认值:
defaults delete com.apple.finder AppleShowAllFiles # 删除单项设置
注意:defaults 修改的是 macOS 的底层配置,且 Apple 不保证这些键名在未来的系统版本中仍然有效。每次大版本更新后,有些 defaults 键会失效,需要重新找。
三、命令速查表
| # | 命令 | 一句话 | 使用频率 |
|---|---|---|---|
| 1 | du -sh * | sort -rh | head | 找当前目录最大的文件 | ⭐⭐⭐⭐⭐ |
| 2 | mdfind | Spotlight 命令行版 | ⭐⭐⭐ |
| 3 | caffeinate | 防止系统休眠 | ⭐⭐⭐ |
| 4 | pbpaste / pbcopy | 命令行操作剪贴板 | ⭐⭐⭐⭐ |
| 5 | !! / !$ | 重用上一条命令 | ⭐⭐⭐⭐⭐ |
| 6 | open | 从终端打开任何东西 | ⭐⭐⭐⭐⭐ |
| 7 | lsof -i :端口 | 看谁占用端口 | ⭐⭐⭐⭐ |
| 8 | find / fd | 递归搜索文件 | ⭐⭐⭐ |
| 9 | history | grep | 搜索历史命令 | ⭐⭐⭐⭐ |
| 10 | defaults write | 修改隐藏系统设置 | ⭐⭐ |
四、关于"文件夹大小速查":终端 vs 图形化
命令 1 讲的是 du -sh * | sort -rh,这是终端里查看文件夹大小的最快方式。
但如果你在 Finder 里浏览文件,不想切到终端、不想 cd 过去、就想随手按一下知道大小——这时候 SpacePeek 比终端更合适。选中文件夹 → 按空格 → 饼图、排名、文件年龄分析全部弹出来,不需要敲一个字符。

两者不冲突:
| 场景 | 用什么 |
|---|---|
| 已经在终端里了 | du -sh * | sort -rh | head |
| 在 Finder 里浏览文件 | SpacePeek(App Store 免费) |
| 需要导出结果做分析 | du -sh * > sizes.txt |
| 需要可视化饼图 | SpacePeek |
| 需要看文件年龄、Git 信息 | SpacePeek |
命令行的优势是管道和自动化,图形化的优势是直观和即时。两者配合,效率最高。
五、总结
三点核心
-
终端不是"只能敲 git 和 npm"。
caffeinate防止休眠、mdfind闪电搜索、pbpaste处理剪贴板——这些是 macOS 终端自带但一直被忽略的利器。每个命令对应一个你每天遇到的真实场景。 -
!!和!$是每天省下最多敲键盘次数的两个符号。 忘了加sudo→sudo !!。创建了长路径 →cd !$。一天 10 次,一年 3650 次,每次省 5 秒 = 5 小时。 -
终端和图形化工具不是二选一。
du -sh和 SpacePeek 解决的是同一个问题——看文件夹大小。但一个适合终端流,一个适合 Finder 流。在正确的地方用正确的工具,比在错误的地方硬扛更高效。
测试环境:macOS 15.0 Sequoia / zsh / 2026 年 7 月
你的终端里有没有一条你每天用但别人大概率不知道的命令?评论区分享一下——我凑够 10 条加到下一版。
5831



被折叠的 条评论
为什么被折叠?



