一、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_versmacOS 版本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
curlHTTP 请求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
networksetupMac网络设置networksetup -listallnetworkservices
airportWiFi 信息airport -I (需完整路径)
dns-sdDNS 服务发现dns-sd -B _ssh._tcp

5. Mac 特有命令

命令说明示例
open打开文件/应用open . (打开Finder)
say语音朗读say "Hello World"
pbcopy复制到剪贴板echo "text" | pbcopy
pbpaste从剪贴板粘贴pbpaste > file.txt
mdfindSpotlight 搜索mdfind "kMDItemDisplayName=='*.txt'"
mdls查看文件元数据mdls file.txt
screencapture截图screencapture -x screen.png
diskutil磁盘工具diskutil list
brewHomebrew 包管理brew install package
softwareupdate系统更新softwareupdate --list
defaults系统偏好设置defaults read com.apple.finder
osascriptAppleScript 执行osascript -e 'tell app "Finder" to quit'
caffeinate防止休眠caffeinate -d
pmset电源管理pmset -g

6. 压缩与解压

命令说明示例
tar打包/解包tar -czvf archive.tar.gz dir/
zipZIP 压缩zip -r archive.zip folder/
unzipZIP 解压unzip archive.zip
gzipGZIP 压缩gzip file.txt
gunzipGZIP 解压gunzip file.txt.gz

二、Mac 与 Linux 命令差异对比

1. 包管理器

系统包管理器安装命令
macOSHomebrewbrew install package
Ubuntu/Debianaptapt install package
CentOS/RHELyum/dnfyum install package
Arch Linuxpacmanpacman -S package
Fedoradnfdnf install package

2. 命令差异对照表

功能Mac 命令Linux 命令说明
查看内存vm_statfree -hMac 无 free 命令
查看磁盘df -hdf -h相同
安装软件brew installapt install包管理器不同
剪贴板pbcopy/pbpastexclip/xselMac 特有
打开文件openxdg-openMac 用 open
语音朗读sayespeakMac 特有 say
截图screencapturescrot/gnome-screenshot不同
服务管理launchctlsystemctlMac 用 launchd
防休眠caffeinatesystemd-inhibitMac 特有
WiFi 信息airportiwconfig/nmcli不同
网络接口ifconfigip addrMac 仍用 ifconfig
进程树pstree (需安装)pstreeMac 需 brew 安装
用户管理dscluseradd/usermodMac 用目录服务
查找命令路径whichwhich相同
环境变量launchctl setenvexport不同

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

五、参考资源