Mac 终端常用指令大全(入门到进阶)

Mac 终端常用指令大全(入门到进阶)

为什么学终端?

如果你是移动端或前端开发,终端几乎每天都会用到:拉代码、切分支、装依赖、跑项目、执行构建脚本、查看日志、查端口、调接口、配置 SSH、处理证书或自动化脚本。很多事不是 Finder 不能做,而是终端更快、更可复制,也更容易沉淀成团队里的标准流程。

这篇文章不追求覆盖所有 Unix 命令,而是从开发日常出发,整理 Mac 上最高频、最实用的一批终端指令。掌握这些内容,基本能覆盖移动端前端开发八九成的日常场景。


先认识一下 Mac 终端

Mac 上常说的“终端”通常指 Terminal.app(终端 App) 或 iTerm2 这类终端模拟器。它本身不是“命令”,而是一个让你和 Shell 交互的窗口。

可以简单理解为:

  • 终端 App:负责显示窗口、接收键盘输入、渲染命令输出
  • Shell:负责解释你输入的命令。macOS 现在默认是 zsh,旧版本常见 bash
  • 命令行工具:如 lscdgitcurlssh,真正完成文件、网络、进程等操作
  • 操作系统底层:macOS 基于 Darwin,属于 Unix-like 系统,很多命令遵循 POSIX/BSD 风格

因此,同一个命令在 Mac 和 Linux 上可能有细微差异。Mac 自带的很多工具是 BSD 版本,Linux 常见的是 GNU 版本,例如 sedgrepdatels 的部分参数就不完全一样。

常用确认命令:

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 &

组合命令里要特别注意空格和引号。涉及删除、移动、覆盖文件时,先用 echols 预演一遍更稳。


九、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                 # 输出剪贴板内容

十一、最后几个建议

  1. 多用 manman ls 就是 ls 的说明书,比 Google 快
  2. Mac 上优先用 man:很多 macOS 自带命令不支持 GNU 风格的 --help
  3. 别背命令:肌肉记忆靠重复,不是死记
  4. 别名(alias):高频命令设别名,比如 alias ll='ls -lah'
  5. 装个好看的终端:推荐 iTerm2 + Oh My Zsh,带命令高亮和自动补全
  6. 危险命令先确认路径:尤其是 rm -rfmvcp > file 这类会删除或覆盖内容的命令

这篇文章可以当作速查表收藏,用到的时候 Ctrl + F 一搜就有。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容