
去年我在 App Store 花了 30 块,买了一个"屏幕共享前隐藏桌面图标"的小工具。
界面就一个按钮。我当时还觉得挺划算——一键操作,方便嘛。
直到某天在 Terminal 里看到一行命令能做同样的事,我整个人都愣住了。
这件事让我开始系统整理:有多少 Mac 应用,本质上就是某个 Terminal 命令的 GUI 壳子?
结果——还挺多的。
今天这篇,是我真正在用的 17 个 Terminal 命令,多数每周必开,几个每天必用。不是炫技,是真的能替代你现在用的某个付费工具,或者绕过那些要点三层菜单才能到的系统设置。
先看全貌:
┌────────────────────────────────────────────────────────┐
│ 17 个 Terminal 宝藏命令速览 │
├─────────────────┬──────────────────┬───────────────────┤
│ ⏰ 电源管理 │ 📋 剪贴板流 │ 💻 系统信息 │
│ caffeinate │ pbcopy/pbpaste │ df -h │
│ pmset │ │ uptime │
│ │ │ battery 查询 │
├─────────────────┼──────────────────┼───────────────────┤
│ 🌐 网络诊断 │ 🎨 系统定制 │ 🔍 文件搜索 │
│ DNS flush │ 隐藏桌面图标 │ mdfind │
│ wdutil │ 截图路径 │ mdls │
│ 公网 IP │ Dock 放大 │ │
│ │ 对话框展开 │ │
├─────────────────┴──────────────────┴───────────────────┤
│ 🔐 安全生成密码 | 🔊 让 Mac 开口说话 │
└────────────────────────────────────────────────────────┘
下面逐个讲,挑你用得上的。
在跑长时间任务的时候,人离开一会儿,回来发现 Mac 睡了,任务中断——这种体验太糟了。
caffeinate
按下回车,Mac 就不会自动休眠,直到你 Ctrl+C。
想定时唤醒?加参数:
caffeinate -d -t 3600 # 保持清醒 1 小时(3600 秒),-d 顺带防止屏幕变暗
我把它设了 alias:alias cf='caffeinate -d',两个字母搞定。
合盖了,风扇还在转?说明有进程"告诉"系统别睡。
pmset -g assertions
翻到输出末尾,找 PreventSystemSleep 或 PreventUserIdleSystemSleep,旁边就是凶手的名字。我遇到最多的是没关干净的备份软件,以及忘记退出的视频播放器。
这是 Terminal 里最容易被忽视、用上之后最停不下来的一对命令。
pbcopy 把任何标准输入送进剪贴板,pbpaste 反过来读出来。
pwd | pbcopy # 当前路径直接复制,省去手动选中
cat ~/.zshrc | pbcopy # 整个配置文件进剪贴板
pbpaste | wc -w # 数数剪贴板里有多少个词
用起来之后,你会开始在所有命令后面本能地加 | pbcopy。
Mac 弹出"磁盘快满了"的提示,然后你去 关于本机 → 储存空间,等十几秒……
不如直接:
df -h
所有磁盘、分区,已用 / 可用 / 总量、百分比,人类可读单位,即时输出,没有 spinner。
-h 是 human-readable 的意思,去掉就是原始字节,没人想看那个。
uptime
告诉你上次重启是多久前,以及系统负载均值。我的 Mac 经常跑到 30 天以上,但超过一周建议还是重启一次——清清内存、跑跑系统更新。
准备出二手或以旧换新?买家第一个问的就是循环次数。Apple 把这个信息埋在三层菜单里,Terminal 一行取出来:
system_profiler SPPowerDataType | grep -E "Cycle Count|Maximum Capacity|Condition|State of Charge"
输出示例:
Cycle Count: 342
Maximum Capacity: 91%
Condition: Normal
State of Charge (%): 78
如果 Condition 显示 Service Recommended,趁早换电池再卖,能多卖不少钱。循环次数超过 1000 且容量低于 80%,报价不会好看。
明明网站没挂,别人能访问,你这里就是白屏。多半是 DNS 缓存问题。
DNS(域名系统)负责把网站名称解析成 IP 地址,Mac 会把结果缓存下来加速访问。缓存过时或损坏,就会出现"别人能开你开不了"的奇怪现象。
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
执行后没有任何输出 = 成功。刷新页面,十次有九次就好了。
很多老教程还在叫你用 airport -I——Sonoma 已经把 airport 命令移除了,用了会报 not found。
新的替代品:
sudo wdutil info
SSID、信道、信号强度(RSSI)、噪声基底、MAC 地址、加密方式,全在一屏。
重点看 RSSI,越接近 0 越强:
RSSI > -60 dBm → 信号很好 ✅
-60 ~ -70 dBm → 正常,可接受
-70 ~ -80 dBm → 开始掉包,能感觉到卡
< -80 dBm → 基本靠信仰续命 💀
curl ifconfig.me
# 或
dig +short myip.opendns.com @resolver1.opendns.com
第二条用 OpenDNS 直查,不经过 HTTP 层,如果两个结果不一样,信 dig 那个。
连了 VPN 但想确认流量真的走了代理?执行一下,看 IP 归属地对不对。
这一节全是「你根本不知道 Terminal 能改这个」的惊喜。
开腾讯会议要共享屏幕,桌面一堆截图和下载文件,尴尬。
# 隐藏
defaults write com.apple.finder CreateDesktop false; killall Finder
# 恢复
defaults write com.apple.finder CreateDesktop true; killall Finder
我把这两行各做了一个 Automator 快捷指令,共享前双击一下,完美。
不想让每张截图都堆在桌面上?
mkdir -p ~/Pictures/Screenshots
defaults write com.apple.screencapture location ~/Pictures/Screenshots
killall SystemUIServer
改回桌面就把路径换回 ~/Desktop。
系统设置里 Dock 放大最大值是 128,Terminal 不管这个:
defaults write com.apple.dock largesize -int 256; killall Dock
试试 512——Dock 图标比你的脸还大,第一次看到会惊叫。(确保在「系统设置 → 桌面与程序坞」里开了放大功能)
恢复默认:defaults delete com.apple.dock largesize; killall Dock
每次保存文件,那个折叠状态的小对话框都要手动点箭头展开——这个动作每天重复几十次,烦死了。
defaults write -g NSNavPanelExpandedStateForSaveMode -bool true
defaults write -g NSNavPanelExpandedStateForSaveMode2 -bool true
defaults write -g PMPrintingExpandedStateForPrint -bool true
defaults write -g PMPrintingExpandedStateForPrint2 -bool true
执行一次,重启,所有应用的保存和打印对话框从此默认展开,全局生效(-g = global)。
这条设置好之后你很快会忘掉自己做过,但每次保存文件时都会莫名其妙地顺畅。
mdfind "kind:pdf invoice" # 所有提到 invoice 的 PDF
mdfind -onlyin ~/Documents "合同" # 只搜 Documents 文件夹
mdfind -name "report.docx" # 按文件名找
因为它复用 Spotlight 已建好的索引,比 find 快很多。最香的是结果可以直接接管道:
mdfind "kind:pdf invoice" | xargs open # 找到就直接打开
Cmd+I 是入门版,mdls 是完整版。
mdls /path/to/file
图片的 EXIF 信息、文档的作者、创建日期、文件的下载来源 URL——全在里面。
mdls -name kMDItemWhereFroms ~/Downloads/某个文件.zip
这条命令会告诉你这个文件是从哪个 URL 下载下来的。你的 Mac 一直默默记着,有点细思极恐,有点意外好用。
LC_ALL=C tr -dc 'A-Za-z0-9!@#$%^&*' </dev/urandom | head -c 20; echo
纯本地随机,不经过任何服务器。加上 | pbcopy 直接送进剪贴板(记得第二节的 pbcopy 吗)。
开头的 LC_ALL=C 是必须加的,不然 macOS 的 tr 遇到非 ASCII 字节会报错,很多教程漏了这个,然后你照抄发现跑不了——现在知道为什么了。
say "任务完成,可以出去吃饭了"
say -v Ting-Ting "这是普通话语音"
实际用途:在长脚本的最后一行加上 say "Done",跑完自动喊你,不用每隔几分钟瞄一眼终端。
密码生成命令 → 替代了某个 ¥18 的菜单栏密码生成器
桌面图标隐藏 → 替代了某个 ¥30 的屏幕共享工具
DNS 一键清除 → 替代了某个"系统优化器"(还要求完全磁盘访问)
caffeinate → 替代了某个"防休眠"应用
如果你的 Mac 上装了某个功能极其单一的小工具——去看一眼它到底干了什么,很可能 Terminal 里有一行能代替它。
这 17 个你之前知道几个?
评论区告诉我:
或者你有用了很久、但感觉鲜有人知的命令,也欢迎留言补充——我会从中挑最有意思的几个,单独出一期「读者投稿の宝藏命令」。