一、Mac 终端常用命令#
1. 文件与目录操作#
| 命令 | 说明 | 示例 |
|---|
ls | 列出目录内容 | ls -la (显示隐藏文件和详细信息) |
cd | 切换目录 | cd ~/Documents |
pwd | 显示当前目录 | pwd |
mkdir | 创建目录 | mkdir -p a/b/c (创建多级目录) |
rmdir | 删除空目录 | rmdir folder |
rm | 删除文件/目录 | rm -rf folder (强制递归删除) |
cp | 复制文件 | cp -r src dest (递归复制) |
mv | 移动/重命名 | mv old.txt new.txt |
touch | 创建空文件 | touch file.txt |
cat | 查看文件内容 | cat file.txt |
less | 分页查看文件 | less large_file.log |
head | 查看文件开头 | head -n 20 file.txt |
tail | 查看文件结尾 | tail -f log.txt (实时追踪) |
find | 查找文件 | find . -name "*.txt" |
grep | 搜索文本 | grep -r "keyword" . |
wc | 统计行数/字数 | wc -l file.txt |
ln | 创建链接 | ln -s source link (软链接) |
2. 文件权限与属性#
| 命令 | 说明 | 示例 |
|---|
chmod | 修改权限 | chmod 755 script.sh |
chown | 修改所有者 | chown user:group file |
chgrp | 修改所属组 | chgrp staff file |
stat | 查看文件属性 | stat file.txt |
file | 查看文件类型 | file unknown_file |
3. 系统信息与管理#
| 命令 | 说明 | 示例 |
|---|
uname | 系统信息 | uname -a |
sw_vers | macOS 版本 | sw_vers |
system_profiler | 系统详细报告 | system_profiler SPHardwareDataType |
top | 进程监控 | top |
htop | 增强版进程监控 | htop (需安装) |
ps | 查看进程 | `ps aux |
kill | 终止进程 | kill -9 PID |
killall | 按名称终止 | killall Finder |
df | 磁盘使用情况 | df -h |
du | 目录大小 | du -sh * |
free | 内存使用 (Linux) | vm_stat (Mac) |
uptime | 系统运行时间 | uptime |
date | 日期时间 | date "+%Y-%m-%d %H:%M:%S" |
4. 网络相关#
| 命令 | 说明 | 示例 |
|---|
ping | 测试网络连通 | ping google.com |
curl | HTTP 请求 | curl -I https://example.com |
wget | 下载文件 | wget url (Mac需安装) |
ssh | 远程登录 | ssh user@server |
scp | 远程复制 | scp file user@server:/path |
rsync | 同步文件 | rsync -avz src/ dest/ |
netstat | 网络状态 | netstat -an |
lsof | 查看端口占用 | lsof -i :8080 |
ifconfig | 网络接口配置 | ifconfig |
networksetup | Mac网络设置 | networksetup -listallnetworkservices |
airport | WiFi 信息 | airport -I (需完整路径) |
dns-sd | DNS 服务发现 | dns-sd -B _ssh._tcp |
5. Mac 特有命令#
| 命令 | 说明 | 示例 |
|---|
open | 打开文件/应用 | open . (打开Finder) |
say | 语音朗读 | say "Hello World" |
pbcopy | 复制到剪贴板 | echo "text" | pbcopy |
pbpaste | 从剪贴板粘贴 | pbpaste > file.txt |
mdfind | Spotlight 搜索 | mdfind "kMDItemDisplayName=='*.txt'" |
mdls | 查看文件元数据 | mdls file.txt |
screencapture | 截图 | screencapture -x screen.png |
diskutil | 磁盘工具 | diskutil list |
brew | Homebrew 包管理 | brew install package |
softwareupdate | 系统更新 | softwareupdate --list |
defaults | 系统偏好设置 | defaults read com.apple.finder |
osascript | AppleScript 执行 | osascript -e 'tell app "Finder" to quit' |
caffeinate | 防止休眠 | caffeinate -d |
pmset | 电源管理 | pmset -g |
6. 压缩与解压#
| 命令 | 说明 | 示例 |
|---|
tar | 打包/解包 | tar -czvf archive.tar.gz dir/ |
zip | ZIP 压缩 | zip -r archive.zip folder/ |
unzip | ZIP 解压 | unzip archive.zip |
gzip | GZIP 压缩 | gzip file.txt |
gunzip | GZIP 解压 | gunzip file.txt.gz |
二、Mac 与 Linux 命令差异对比#
1. 包管理器#
| 系统 | 包管理器 | 安装命令 |
|---|
| macOS | Homebrew | brew install package |
| Ubuntu/Debian | apt | apt install package |
| CentOS/RHEL | yum/dnf | yum install package |
| Arch Linux | pacman | pacman -S package |
| Fedora | dnf | dnf install package |
2. 命令差异对照表#
| 功能 | Mac 命令 | Linux 命令 | 说明 |
|---|
| 查看内存 | vm_stat | free -h | Mac 无 free 命令 |
| 查看磁盘 | df -h | df -h | 相同 |
| 安装软件 | brew install | apt install | 包管理器不同 |
| 剪贴板 | pbcopy/pbpaste | xclip/xsel | Mac 特有 |
| 打开文件 | open | xdg-open | Mac 用 open |
| 语音朗读 | say | espeak | Mac 特有 say |
| 截图 | screencapture | scrot/gnome-screenshot | 不同 |
| 服务管理 | launchctl | systemctl | Mac 用 launchd |
| 防休眠 | caffeinate | systemd-inhibit | Mac 特有 |
| WiFi 信息 | airport | iwconfig/nmcli | 不同 |
| 网络接口 | ifconfig | ip addr | Mac 仍用 ifconfig |
| 进程树 | pstree (需安装) | pstree | Mac 需 brew 安装 |
| 用户管理 | dscl | useradd/usermod | Mac 用目录服务 |
| 查找命令路径 | which | which | 相同 |
| 环境变量 | launchctl setenv | export | 不同 |
3. sed 命令差异#
Mac 的 sed 是 BSD 版本,Linux 是 GNU 版本,语法有差异:
# Mac (BSD sed) - 需要 '' 表示无备份
sed -i '' 's/old/new/g' file.txt
# Linux (GNU sed) - 直接使用
sed -i 's/old/new/g' file.txt
4. find 命令差异#
# Mac - 需要 + 号
find . -mtime +7
# Linux - 可以用 + 或 -
find . -mtime +7
5. date 命令差异#
# Mac (BSD date)
date -j -f "%Y-%m-%d" "2024-01-01" "+%s"
# Linux (GNU date)
date -d "2024-01-01" "+%s"
6. 服务管理差异#
# Mac - launchctl
sudo launchctl load -w /System/Library/LaunchDaemons/service.plist
sudo launchctl unload /System/Library/LaunchDaemons/service.plist
# Linux - systemctl
sudo systemctl start service
sudo systemctl stop service
sudo systemctl enable service
三、Git 常用命令速查#
1. 初始化与配置#
| 命令 | 说明 |
|---|
git init | 初始化仓库 |
git clone url | 克隆远程仓库 |
git config --global user.name "name" | 设置用户名 |
git config --global user.email "email" | 设置邮箱 |
git config --list | 查看配置 |
git config --global core.editor "code --wait" | 设置默认编辑器 |
2. 基本操作#
| 命令 | 说明 |
|---|
git status | 查看状态 |
git add file | 添加文件到暂存区 |
git add . | 添加所有修改 |
git add -p | 交互式添加 |
git commit -m "message" | 提交更改 |
git commit --amend | 修改上次提交 |
git rm file | 删除文件 |
git mv old new | 重命名文件 |
3. 分支管理#
| 命令 | 说明 |
|---|
git branch | 查看本地分支 |
git branch -a | 查看所有分支 |
git branch name | 创建分支 |
git branch -d name | 删除分支 |
git checkout name | 切换分支 |
git checkout -b name | 创建并切换分支 |
git switch name | 切换分支 (新语法) |
git switch -c name | 创建并切换 (新语法) |
git merge name | 合并分支 |
git merge --no-ff name | 禁用快进合并 |
git rebase main | 变基到 main |
4. 远程操作#
| 命令 | 说明 |
|---|
git remote -v | 查看远程仓库 |
git remote add origin url | 添加远程仓库 |
git remote remove name | 移除远程仓库 |
git fetch origin | 获取远程更新 |
git pull origin main | 拉取并合并 |
git pull --rebase origin main | 拉取并变基 |
git push origin main | 推送到远程 |
git push -u origin main | 推送并设置上游 |
git push --force | 强制推送 |
git push --all | 推送所有分支 |
git push --tags | 推送所有标签 |
5. 查看历史#
| 命令 | 说明 |
|---|
git log | 查看提交历史 |
git log --oneline | 简洁模式 |
git log --graph | 图形化显示 |
git log -n 5 | 最近5次提交 |
git log --author "name" | 按作者筛选 |
git log --since "2024-01-01" | 按日期筛选 |
git show commit | 查看提交详情 |
git diff | 查看未暂存的修改 |
git diff --cached | 查看已暂存的修改 |
git diff branch1 branch2 | 比较分支差异 |
git blame file | 查看文件修改历史 |
6. 撤销与回退#
| 命令 | 说明 |
|---|
git checkout -- file | 撤销工作区修改 |
git restore file | 撤销工作区修改 (新语法) |
git reset HEAD file | 取消暂存 |
git restore --staged file | 取消暂存 (新语法) |
git reset --soft HEAD~1 | 软回退 (保留修改) |
git reset --mixed HEAD~1 | 混合回退 (默认) |
git reset --hard HEAD~1 | 硬回退 (丢弃修改) |
git revert commit | 创建撤销提交 |
git clean -fd | 删除未跟踪文件 |
7. 暂存工作#
| 命令 | 说明 |
|---|
git stash | 暂存当前工作 |
git stash save "message" | 带消息暂存 |
git stash list | 查看暂存列表 |
git stash pop | 恢复并删除暂存 |
git stash apply | 恢复但保留暂存 |
git stash drop | 删除暂存 |
git stash clear | 清空所有暂存 |
8. 标签管理#
| 命令 | 说明 |
|---|
git tag | 查看标签 |
git tag v1.0 | 创建轻量标签 |
git tag -a v1.0 -m "msg" | 创建附注标签 |
git tag -d v1.0 | 删除本地标签 |
git push origin v1.0 | 推送标签 |
git push origin --tags | 推送所有标签 |
git checkout v1.0 | 切换到标签 |
9. 子模块#
| 命令 | 说明 |
|---|
git submodule add url path | 添加子模块 |
git submodule init | 初始化子模块 |
git submodule update | 更新子模块 |
git submodule update --init --recursive | 递归初始化更新 |
git submodule foreach git pull | 更新所有子模块 |
10. 其他实用命令#
| 命令 | 说明 |
|---|
git reflog | 查看操作历史 |
git cherry-pick commit | 选择性合并提交 |
git bisect start | 二分查找问题提交 |
git gc | 垃圾回收 |
git fsck | 检查仓库完整性 |
git shortlog -sn | 统计提交数量 |
git archive -o.zip HEAD | 导出仓库快照 |
四、实用技巧#
1. Mac 终端快捷键#
| 快捷键 | 功能 |
|---|
Ctrl + A | 移到行首 |
Ctrl + E | 移到行尾 |
Ctrl + U | 删除到行首 |
Ctrl + K | 删除到行尾 |
Ctrl + W | 删除前一个词 |
Ctrl + R | 搜索历史命令 |
Ctrl + L | 清屏 |
Ctrl + C | 终止当前命令 |
Ctrl + Z | 挂起当前命令 |
Tab | 自动补全 |
↑/↓ | 历史命令导航 |
2. Git 别名配置#
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.unstage "reset HEAD --"
git config --global alias.last "log -1 HEAD"
3. 常用组合命令#
# 查找并删除文件
find . -name "*.log" -type f -delete
# 统计代码行数
find . -name "*.py" | xargs wc -l
# 批量重命名
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
# 监控文件变化
fswatch -o . | xargs -n1 -I{} script.sh
# Git 撤销最近一次提交但保留修改
git reset --soft HEAD~1
# Git 查看某文件的修改历史
git log --follow -p -- file.txt
五、参考资源#