Mac 终端常用指令大全(入门到进阶)
为什么学终端?
如果你是移动端或前端开发,终端几乎每天都会用到:拉代码、切分支、装依赖、跑项目、执行构建脚本、查看日志、查端口、调接口、配置 SSH、处理证书或自动化脚本。很多事不是 Finder 不能做,而是终端更快、更可复制,也更容易沉淀成团队里的标准流程。
这篇文章不追求覆盖所有 Unix 命令,而是从开发日常出发,整理 Mac 上最高频、最实用的一批终端指令。掌握这些内容,基本能覆盖移动端前端开发八九成的日常场景。
先认识一下 Mac 终端
Mac 上常说的“终端”通常指 Terminal.app(终端 App) 或 iTerm2 这类终端模拟器。它本身不是“命令”,而是一个让你和 Shell 交互的窗口。
可以简单理解为:
- 终端 App:负责显示窗口、接收键盘输入、渲染命令输出
-
Shell:负责解释你输入的命令。macOS 现在默认是
zsh,旧版本常见bash -
命令行工具:如
ls、cd、git、curl、ssh,真正完成文件、网络、进程等操作 - 操作系统底层:macOS 基于 Darwin,属于 Unix-like 系统,很多命令遵循 POSIX/BSD 风格
因此,同一个命令在 Mac 和 Linux 上可能有细微差异。Mac 自带的很多工具是 BSD 版本,Linux 常见的是 GNU 版本,例如 sed、grep、date、ls 的部分参数就不完全一样。
常用确认命令:
echo $SHELL # 查看当前默认 Shell
zsh --version # 查看 zsh 版本
sw_vers # 查看 macOS 系统版本
uname -a # 查看系统内核信息
which git # 查看 git 命令路径
一、文件与目录:终端的基本功
1.1 你在哪,有什么?
pwd # 我在哪个目录?
ls # 这下面有什么文件?
ls -la # 包含隐藏文件,显示权限/大小/时间
ls -lh # 文件大小用 KB/MB 显示,更直观
ls -lt # 按修改时间排序,最新的在最上面
1.2 到处走走
cd /path/to/folder # 去指定目录
cd ~ # 回家(用户主目录)
cd .. # 上一级
cd - # 回到刚才的目录(反复横跳神器)
cd # 不带参数 = 回家
1.3 增删改查
# 创建
touch note.txt # 新建空文件,也可用来更新文件修改时间
mkdir myproject # 新建目录
mkdir -p src/components # 一口气创建多层目录
# 复制
cp a.txt b.txt # 复制文件
cp -r src/ backup/ # 复制整个文件夹
# 移动/改名(mv 身兼两职)
mv old.swift new.swift # 重命名
mv file.swift ~/Desktop/ # 移动
# 删除(高危操作,三思后行)
rm file.txt # 删文件
rm -r folder/ # 删文件夹
rm -rf folder/ # 强制递归删除,没有确认,不可恢复!
新手建议:不确定时用
ls先确认路径,rm -rf之前深呼吸。
1.4 看看里面有什么
cat file.txt # 一把全输出到终端(小文件用)
cat a.txt b.txt # 在终端连续输出多个文件
less huge.log # 分页浏览(上下翻,按 q 退出,按 / 搜索)
head -20 log.txt # 只看前 20 行
tail -30 log.txt # 只看末尾 30 行
tail -f app.log # 实时追踪日志(调试时巨好用,Ctrl+C 停止)
cat 适合看小文件或把内容传给别的命令。大文件建议用 less,否则会刷屏。
cat file.txt | grep "error" # 输出文件内容后筛选 error
cat file.txt > copy.txt # 覆盖写入到新文件
cat file.txt >> all.txt # 追加到文件末尾
1.5 Mac 剪贴板:pbcopy / pbpaste
Mac 终端可以直接和系统剪贴板互通,开发时非常实用:
cat id_ed25519.pub | pbcopy # 把 SSH 公钥复制到剪贴板
pbcopy < id_ed25519.pub # 同上,更简洁
pbpaste # 输出当前剪贴板内容
pbpaste > note.txt # 把剪贴板内容保存到文件
git diff | pbcopy # 把当前改动复制出去
pwd | pbcopy # 复制当前目录路径
常见场景:复制 SSH 公钥到 GitHub、复制接口返回、复制 Git diff、把剪贴板内容落地成文件。
二、权限管理:偶尔要用但必须会
chmod +x deploy.sh # 让脚本可执行(+x = 加执行权限)
chmod 755 deploy.sh # 数字模式:rwxr-xr-x
sudo chown user:group file.txt # 改文件归属,user/group 替换成真实用户和用户组
# 加 sudo 表示以管理员身份执行,会要求输入密码
三、进程与系统:当电脑卡了怎么办
# 找出谁在占资源
ps aux # 列出所有进程,输出很长
ps aux | grep Chrome # 只看 Chrome 相关进程
top # 动态任务管理器(按 q 退出)
htop # 更好用的进程工具,需要自行安装
# 关掉它
kill 1234 # 优雅结束
kill -9 1234 # 暴力结束(对方不响应时用)
pkill -f node # 按名字杀,干掉所有 node 进程
# 磁盘还好吗
df -h # 各磁盘用了多少
du -sh * # 当前目录下每个文件/文件夹多大
du -sh . # 当前目录总共多大
du -d 1 -h ~/ | sort -hr | head -10 # 找出家里较占空间的 10 个目录
du -sh *不包含隐藏文件;如果要连同隐藏目录一起看,优先用du -hd 1 .,执行前建议先ls -la确认。
四、网络:联调排障必备
# 网络通不通
ping baidu.com # 检查网络连通性(Ctrl+C 停止)
curl -I https://api.example.com # 看 HTTP 响应头,确认服务是否正常
curl -v https://api.example.com # 输出详细请求过程,排查证书/代理/连接问题
curl -L https://example.com # 跟随重定向
# 我的 IP 是什么
ifconfig | grep "inet " # 查看本机 IPv4,结果里 127.0.0.1 是本机回环地址
curl ifconfig.me # 查看公网 IP
# 端口被谁占了?
lsof -i :8080 # 谁占了我的 8080?
lsof -i -P -n | grep LISTEN # 查看所有监听端口
# DNS 怎么了
nslookup github.com # 快速查域名解析
dig github.com # 详细 DNS 信息
# SSH 连不连得上
ssh -T git@github.com # 测试 GitHub SSH 认证
ssh -vT git@github.com # 输出详细调试日志
五、搜索:茫茫文件海里找东西
# 找文件
find . -name "*.swift" # 当前目录下所有 Swift 文件
find . -type d -name "node_modules" # 找所有 node_modules 目录
find . -name "*.log" -mtime -3 # 最近 3 天改过的日志文件
# 找文件里的内容
grep "TODO" AppDelegate.swift # 文件里搜 TODO
grep -r "import UIKit" ./src/ # 递归搜整个目录
grep -rn "func login" . # 显示文件名+行号
grep -i "error" app.log # 忽略大小写
grep -v "#" config.conf # 排除注释行
grep -rn "keyword" . | grep -v "/.git/" # 递归搜索并排除 .git 目录
# 如果安装了 ripgrep,开发中更推荐 rg,速度快、默认忽略 .gitignore
rg "func login"
rg -n "TODO" .
# 找命令在哪
which python3 # 用的哪个 Python?
command -v node # 更通用地查看命令路径
六、压缩解压:文件太大传不动?
tar -czvf project.tar.gz myproject/ # 打包+压缩(最常用)
tar -xzvf project.tar.gz # 解压
tar -tzvf project.tar.gz # 只查看压缩包内容,不解压
zip -r archive.zip folder/ # 压缩为 zip(发给 Windows 用户时用)
unzip archive.zip -d /target/path/ # 解压到指定目录
七、效率翻倍的快捷键
不是命令,但比命令更常用:
| 快捷键 | 作用 |
|---|---|
Ctrl + A |
跳到行首 |
Ctrl + E |
跳到行尾 |
Ctrl + U |
清掉光标左边的内容 |
Ctrl + K |
清掉光标右边的内容 |
Ctrl + W |
删除前一个单词 |
Ctrl + L |
清屏(等于 clear) |
Ctrl + R |
搜索历史命令(输入关键字,再按一次继续搜) |
Tab |
自动补全路径/命令名 |
!! |
用 sudo 执行上一条命令:sudo !!
|
Ctrl + C |
中断当前命令 |
Ctrl + D |
结束输入/退出当前 Shell |
八、组合技:一行命令解决复杂问题
# 统计代码行数
find . -name "*.swift" -print0 | xargs -0 wc -l | tail -1
# 找出最占空间的 5 个文件
du -sh * | sort -hr | head -5
# 批量重命名(所有 .txt 改 .md)
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
# 日志里抓出所有 5xx 错误
grep " 50[0-9] " access.log | awk '{print $7}' | sort | uniq -c | sort -rn
# 后台运行,关终端也不停
nohup npm start > app.log 2>&1 &
组合命令里要特别注意空格和引号。涉及删除、移动、覆盖文件时,先用
echo或ls预演一遍更稳。
九、Git 速查(开发每天用)
git status # 看看改了什么
git diff # 看看具体改了什么
git add -p # 交互式暂存,逐个确认改动
git commit -m "xxx" # 提交
git log --oneline -10 # 最近 10 条提交,一行一条
git branch # 查看本地分支
git switch main # 切换分支
git switch -c feature/x # 创建并切换到新分支
git pull --rebase # 拉取远端更新,并把本地提交接到最新代码后面
git push # 推送当前分支
git stash && git pull && git stash pop # 先藏起来,拉代码,再拿出来
git stash pop可能产生冲突。重要改动建议先提交到临时分支,或者至少确认git status是自己能处理的状态。
十、Mac 专属高频命令
open . # 用 Finder 打开当前目录
open file.pdf # 用默认 App 打开文件
open -a "Visual Studio Code" . # 用指定 App 打开当前目录
say "build finished" # 让 Mac 读一句话,脚本提醒时好用
caffeinate # 防止 Mac 睡眠,Ctrl+C 停止
pbcopy < file.txt # 复制文件内容到剪贴板
pbpaste # 输出剪贴板内容
十一、最后几个建议
-
多用
man:man ls就是 ls 的说明书,比 Google 快 -
Mac 上优先用
man:很多 macOS 自带命令不支持 GNU 风格的--help - 别背命令:肌肉记忆靠重复,不是死记
-
别名(alias):高频命令设别名,比如
alias ll='ls -lah' - 装个好看的终端:推荐 iTerm2 + Oh My Zsh,带命令高亮和自动补全
-
危险命令先确认路径:尤其是
rm -rf、mv、cp > file这类会删除或覆盖内容的命令
这篇文章可以当作速查表收藏,用到的时候 Ctrl + F 一搜就有。