Mac 终端常用指令大全(入门到进阶)
为什么学终端?
如果你是一名开发者,迟早会遇到这样的场景:需要在服务器上排查问题,但服务器只有命令行界面;或者别人一行命令搞定的事,你还在 Finder 里点点点。终端不是炫技工具,而是效率利器。本文从日常使用出发,整理了 Mac 终端最高频的指令。
一、文件与目录:终端的基本功
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 # 一把全输出(小文件用)
less huge.log # 分页浏览(上下翻,按 q 退出,按 / 搜索)
head -20 log.txt # 只看前 20 行
tail -30 log.txt # 只看末尾 30 行
tail -f app.log # 实时追踪日志(调试时巨好用,Ctrl+C 停止)
二、权限管理:偶尔要用但必须会
chmod +x deploy.sh # 让脚本可执行(+x = 加执行权限)
chmod 755 deploy.sh # 数字模式:rwxr-xr-x
sudo chown mysql:mysql /data # 改文件归属
# 加 sudo 表示以管理员身份执行,会要求输入密码
三、进程与系统:当电脑卡了怎么办
# 找出谁在占资源
ps aux # 列出所有进程,输出很长
ps aux | grep Chrome # 只看 Chrome 相关进程
top # 动态任务管理器(按 q 退出)
# 关掉它
kill 1234 # 优雅结束
kill -9 1234 # 暴力结束(对方不响应时用)
pkill -f node # 按名字杀,干掉所有 node 进程
# 磁盘还好吗
df -h # 各磁盘用了多少
du -sh * # 当前目录下每个文件/文件夹多大
du -sh . # 当前目录总共多大
du -d 1 -h ~/ | sort -hr | head -10 # 找出家里最占空间的 10 个目录
四、网络:联调排障必备
# 网络通不通
ping baidu.com # 检查网络连通性(Ctrl+C 停止)
curl -I https://api.example.com # 看 HTTP 响应头,确认服务是否正常
# 我的 IP 是什么
ifconfig | grep "inet " # 查看本机 IP
curl ifconfig.me # 查看公网 IP
# 端口被谁占了?
lsof -i :8080 # 谁占了我的 8080?
lsof -i -P -n | grep LISTEN # 查看所有监听端口
# DNS 怎么了
nslookup github.com # 快速查域名解析
dig github.com # 详细 DNS 信息
五、搜索:茫茫文件海里找东西
# 找文件
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 # 排除注释行
# 找命令在哪
which python3 # 用的哪个 Python?
whereis node # node 装哪了?
六、压缩解压:文件太大传不动?
tar -czvf project.tar.gz myproject/ # 打包+压缩(最常用)
tar -xzvf 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 !!
|
八、组合技:一行命令解决复杂问题
# 统计代码行数
find . -name "*.swift" | xargs 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 &
九、Git 速查(开发每天用)
git status # 看看改了什么
git diff # 看看具体改了什么
git add -p # 交互式暂存,逐个确认改动
git commit -m "xxx" # 提交
git log --oneline -10 # 最近 10 条提交,一行一条
git stash && git pull && git stash pop # 先藏起来,拉代码,再拿出来
十、最后几个建议
-
多用
man:man ls就是 ls 的说明书,比 Google 快 -
--help也行:ls --help通常有精简版说明 - 别背命令:肌肉记忆靠重复,不是死记
-
别名(alias):高频命令设别名,比如
alias ll='ls -lah' - 装个好看的终端:推荐 iTerm2 + Oh My Zsh,带命令高亮和自动补全
这篇文章可以当作速查表收藏,用到的时候 Ctrl + F 一搜就有。