Mac & Linux 命令速查
Mac & Linux 命令速查
标识说明
[Mac & Linux]:Mac 与 Linux 行为基本一致,Linux 章节不再重复展开- 无标识:主要为 macOS 特有或实现差异较大
一、Mac 常用命令(按使用频率排序)
1. cd — 切换目录 [Mac & Linux]
功能:进入指定目录,是 shell 内建命令,改变当前工作路径。
使用场景:在终端中导航项目目录、进入用户主目录或上级目录。
示例:
cd ~/Projects/my-app # 进入绝对路径
cd .. # 返回上一级
cd - # 回到上一次所在目录
cd # 回到用户主目录($HOME)
2. ls — 列出目录内容 [Mac & Linux]
功能:显示当前或指定目录下的文件和子目录。
使用场景:快速查看文件夹内容、确认文件是否存在、检查权限与时间。
示例:
ls # 简要列表
ls -la # 含隐藏文件、权限、大小、时间
ls -lh # 人类可读的文件大小
ls -lt # 按修改时间排序
ls /usr/local/bin # 列出指定路径
3. pwd — 显示当前路径 [Mac & Linux]
功能:打印当前工作目录的完整绝对路径。
使用场景:确认自己所在目录、写脚本时获取路径、排查路径错误。
示例:
pwd # 输出如 /Users/jyz/Projects
4. cat — 查看文件内容 [Mac & Linux]
功能:将文件内容输出到标准输出,可串联多个文件。
使用场景:快速查看小文件、合并文件内容、配合管道做简单处理。
示例:
cat README.md # 查看文件
cat file1.txt file2.txt # 连续输出多个文件
cat -n script.sh # 带行号显示
5. grep — 文本搜索 [Mac & Linux]
功能:按正则或关键字在文本中搜索匹配行。
使用场景:在日志中查错误、在代码中找函数名、过滤命令输出。
示例:
grep "error" app.log
grep -r "TODO" ./src # 递归搜索目录
grep -i "warning" *.log # 忽略大小写
ps aux | grep nginx # 配合管道使用
grep -n "function" app.js # 显示行号
6. find — 查找文件 [Mac & Linux]
功能:按名称、类型、时间、大小等条件在目录树中查找文件。
使用场景:定位丢失的配置文件、批量查找某类文件、配合 -exec 执行操作。
示例:
find . -name "*.log" # 按文件名
find ~/Downloads -mtime -7 # 7 天内修改过的文件
find . -type f -size +100M # 大于 100MB 的普通文件
find . -name "*.tmp" -delete # 查找并删除(慎用)
7. cp — 复制 [Mac & Linux]
功能:复制文件或目录。
使用场景:备份文件、复制项目模板、批量拷贝资源。
示例:
cp file.txt file.bak
cp -r src/ dest/ # 递归复制目录
cp -p config.yml config.yml.bak # 保留属性
8. mv — 移动/重命名 [Mac & Linux]
功能:移动文件或目录,也可用于重命名。
使用场景:整理文件结构、批量改名、将文件移到目标目录。
示例:
mv old.txt new.txt # 重命名
mv report.pdf ~/Documents/
mv *.png images/ # 批量移动
9. rm — 删除 [Mac & Linux]
功能:删除文件或目录(不可恢复,需谨慎)。
使用场景:清理临时文件、删除构建产物、移除空目录。
示例:
rm file.txt
rm -r build/ # 递归删除目录
rm -f *.log # 强制删除,不提示
rm -i important.conf # 删除前确认
10. mkdir — 创建目录 [Mac & Linux]
功能:创建一个新目录,可加 -p 创建多级路径。
使用场景:初始化项目结构、创建日志目录、脚本中准备输出路径。
示例:
mkdir logs
mkdir -p src/components/ui
11. touch — 创建/更新时间戳 [Mac & Linux]
功能:创建空文件,或更新已有文件的访问/修改时间。
使用场景:快速创建占位文件、触发 Make 等构建工具重新编译。
示例:
touch new-file.txt
touch -t 202501011200 file.txt # 指定时间戳
12. echo — 输出文本 [Mac & Linux]
功能:将字符串或变量值输出到终端或重定向到文件。
使用场景:打印调试信息、写简单脚本、生成配置文件片段。
示例:
echo "Hello"
echo $PATH
echo "export NODE_ENV=prod" >> ~/.zshrc
13. chmod — 修改权限 [Mac & Linux]
功能:修改文件或目录的读/写/执行权限。
使用场景:给脚本加执行权限、收紧敏感文件权限、修复无法执行的问题。
示例:
chmod +x deploy.sh # 添加执行权限
chmod 644 config.yml # rw-r--r--
chmod -R 755 public/ # 递归修改目录
14. chown — 修改所有者 [Mac & Linux]
功能:更改文件或目录的所有者和所属组(通常需 sudo)。
使用场景:修复 Web 服务目录权限、恢复误改的所有者。
示例:
sudo chown jyz:staff file.txt
sudo chown -R www-data:www-data /var/www # Linux 常见
sudo chown -R $(whoami) ~/.npm # Mac 修复 npm 权限
15. sudo — 以管理员执行 [Mac & Linux]
功能:以超级用户(root)权限运行后续命令。
使用场景:安装系统级软件、修改系统配置、绑定 1024 以下端口。
示例:
sudo ls /var/log
sudo -s # 切换到 root shell
sudo !! # 用 sudo 重新执行上一条命令
16. man — 查看手册 [Mac & Linux]
功能:显示命令的官方说明文档。
使用场景:忘记参数含义、查命令完整选项、学习新工具。
示例:
man ls
man grep
man 5 crontab # 查看 crontab 配置文件格式(第 5 节)
17. which / where — 查找命令路径
功能:
which[Mac & Linux]:显示可执行命令在 PATH 中的路径where(Mac/zsh):列出所有匹配的可执行文件路径
使用场景:确认用的是哪个版本的 python/node、排查命令找不到问题。
示例:
which python3
which -a git # 列出所有匹配路径
where node # Mac 上常用
18. history — 命令历史 [Mac & Linux]
功能:显示或搜索此前执行过的 shell 命令。
使用场景:找回刚执行过的长命令、审计操作记录。
示例:
history
history | grep docker
!123 # 执行历史中第 123 条
19. alias — 命令别名 [Mac & Linux]
功能:为长命令创建短别名,可写入 ~/.zshrc 或 ~/.bashrc 持久化。
使用场景:简化常用操作、统一团队命令习惯。
示例:
alias ll='ls -lah'
alias gs='git status'
alias ..='cd ..'
unalias ll
20. head / tail — 查看文件头尾 [Mac & Linux]
功能:分别显示文件开头或末尾若干行;tail -f 可持续跟踪新内容。
使用场景:预览大文件、实时查看日志、检查 CSV 表头。
示例:
head -n 20 access.log
tail -n 50 error.log
tail -f /var/log/system.log # 实时跟踪(Mac 系统日志)
21. less / more — 分页查看 [Mac & Linux]
功能:分页浏览长文件内容,less 功能更强(可前后翻页)。
使用场景:阅读长日志、查看 man 输出、浏览大文本。
示例:
less app.log # 空格翻页,q 退出,/ 搜索
cat huge.txt | less
22. wc — 统计行/词/字节 [Mac & Linux]
功能:统计文件的行数、单词数、字符数。
使用场景:统计代码行数、确认日志条数、检查文件是否为空。
示例:
wc -l *.log # 行数
wc -w article.txt # 词数
wc -c file.bin # 字节数
23. sort / uniq — 排序与去重 [Mac & Linux]
功能:sort 对行排序;uniq 去除相邻重复行(通常先 sort)。
使用场景:分析访问日志、统计 IP、整理名单。
示例:
sort names.txt
sort -n numbers.txt # 数值排序
sort access.log | uniq -c | sort -rn # 统计频次
24. awk / sed — 文本处理 [Mac & Linux]
功能:
awk:按列处理结构化文本,适合日志分析sed:流编辑器,替换、删除、插入文本
使用场景:批量替换配置、提取 CSV 列、简单 ETL。
示例:
awk '{print $1, $NF}' access.log
awk -F',' '{print $2}' data.csv
sed 's/foo/bar/g' file.txt
sed -i '' 's/old/new/' config.yml # Mac 需空扩展名 -i ''
sed -i 's/old/new/' config.yml # Linux 直接 -i
25. curl — 网络请求 [Mac & Linux]
功能:发送 HTTP/HTTPS 等请求,下载文件,调试 API。
使用场景:测试接口、下载安装包、检查服务是否可达。
示例:
curl https://api.example.com/health
curl -O https://example.com/file.zip # 下载并保留原名
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"test"}' https://api.example.com/users
curl -I https://google.com # 只看响应头
26. ssh / scp / sftp — 远程连接与传输 [Mac & Linux]
功能:
ssh:登录远程主机并执行命令scp:通过 SSH 复制文件sftp:交互式文件传输
使用场景:登录服务器、部署代码、拉取远程日志。
示例:
ssh user@192.168.1.10
ssh -i ~/.ssh/id_ed25519 user@server
scp local.txt user@server:/tmp/
scp -r ./dist user@server:/var/www/
ssh user@server "df -h" # 远程执行单条命令
27. ps / kill / killall — 进程管理 [Mac & Linux]
功能:
ps:查看进程列表kill:按 PID 发送信号终止进程killall:按进程名终止(Mac/Linux 均可用,慎用)
使用场景:查占用端口的进程、结束卡死程序、释放资源。
示例:
ps aux | grep node
kill 12345
kill -9 12345 # 强制结束
killall Safari # Mac:按名称结束
lsof -i :3000 # 查占用 3000 端口的进程(见 lsof)
28. top / htop — 实时监控 [Mac & Linux]
功能:动态显示 CPU、内存、进程占用;htop 需额外安装,交互更友好。
使用场景:排查机器卡顿、找高 CPU 进程。
示例:
top
top -o cpu # Mac:按 CPU 排序
htop # brew install htop
29. df / du — 磁盘空间 [Mac & Linux]
功能:
df:查看各挂载点磁盘使用情况du:统计目录或文件占用空间
使用场景:磁盘满了排查、清理大目录、部署前检查空间。
示例:
df -h
du -sh *
du -sh ~/Library/Caches # Mac 查缓存占用
du -d 1 -h . # Mac:仅一层子目录
30. ping / traceroute — 网络诊断 [Mac & Linux]
功能:测试到目标主机的连通性与延迟;traceroute 显示路由路径。
使用场景:判断网络是否通、排查 DNS/路由问题。
示例:
ping -c 4 google.com
traceroute google.com
# Linux 也可用 tracepath、mtr
31. ifconfig / networksetup — 网络配置
功能:
ifconfig[Mac & Linux]:查看/配置网络接口(Linux 更推荐ip)networksetup(Mac):管理系统网络服务、代理、DNS
使用场景:查看本机 IP、排查网卡、配置代理(Mac GUI 的 CLI 版)。
示例:
ifconfig en0 # Mac 无线网卡
ifconfig | grep inet
networksetup -listallnetworkservices
networksetup -getwebproxy Wi-Fi
32. lsof — 列出打开的文件 [Mac & Linux]
功能:显示进程打开了哪些文件、网络连接、占用的端口。
使用场景:查谁占用了某端口、某文件被哪个进程锁定。
示例:
lsof -i :8080
lsof -p 1234
lsof /path/to/file
33. tar / gzip / zip — 压缩与打包 [Mac & Linux]
功能:打包、压缩、解压常见归档格式。
使用场景:分发项目、备份目录、解压下载包。
示例:
tar -czvf archive.tar.gz folder/
tar -xzvf archive.tar.gz
zip -r backup.zip project/
unzip backup.zip
gzip file.txt # 生成 file.txt.gz
gunzip file.txt.gz
34. brew — Homebrew 包管理(Mac)
功能:macOS 上最常用的第三方软件包管理器,安装 CLI 与 GUI 应用。
使用场景:安装开发工具、升级软件、管理服务。
示例:
brew install node git wget
brew update && brew upgrade
brew list
brew services start mysql
brew uninstall wget
brew search python
35. open — 用默认应用打开(Mac)
功能:用系统默认程序打开文件、目录或 URL。
使用场景:在 Finder 中打开目录、用浏览器打开链接、用 Xcode 打开工程。
示例:
open .
open https://example.com
open -a "Visual Studio Code" .
open -R /path/to/file # 在 Finder 中定位并选中
36. pbcopy / pbpaste — 剪贴板(Mac)
功能:与系统剪贴板交互,在终端与 GUI 间传递文本。
使用场景:复制命令输出、粘贴密钥、快速传文本到编辑器。
示例:
echo "hello" | pbcopy
pbpaste
pbpaste > pasted.txt
cat file.txt | pbcopy
37. defaults — 修改 macOS 偏好(Mac)
功能:读写 macOS 应用的 plist 偏好设置(系统与应用行为)。
使用场景:调整 Dock、Finder、截图等系统行为(需知具体 key)。
示例:
defaults read com.apple.finder
defaults write com.apple.dock autohide -bool true
killall Dock # 使 Dock 设置生效
38. diskutil — 磁盘工具(Mac)
功能:管理磁盘、分区、挂载、格式化、修复权限等。
使用场景:查看外置硬盘、卸载/U 盘安全弹出、查磁盘信息。
示例:
diskutil list
diskutil info disk2s1
diskutil unmount /Volumes/MyUSB
diskutil eject /Volumes/MyUSB
39. pmset — 电源管理(Mac)
功能:查看和配置睡眠、休眠、电源策略。
使用场景:防止合盖休眠、演示时保持唤醒、查电池状态。
示例:
pmset -g
pmset displaysleep 10
caffeinate -dims & # 防止系统睡眠(见 caffeinate)
40. caffeinate — 防止睡眠(Mac)
功能:在一段时间内或直到某进程结束,阻止 Mac 进入睡眠。
使用场景:长时间编译、下载、跑脚本时保持机器唤醒。
示例:
caffeinate -t 3600 # 保持唤醒 1 小时
caffeinate -i make build # 直到 make 结束
41. mdfind / mdls — Spotlight 搜索(Mac)
功能:通过 Spotlight 元数据快速查找文件、查看文件元信息。
使用场景:按内容或类型找文件、查文件创建时间、MIME 类型。
示例:
mdfind -name "report.pdf"
mdfind "kMDItemContentType == 'public.png'"
mdls ~/Desktop/photo.jpg
42. xattr — 扩展属性(Mac)
功能:查看/修改文件的扩展属性,如「从互联网下载」隔离标记。
使用场景:无法打开未签名应用、清除 com.apple.quarantine。
示例:
xattr -l downloaded.app
xattr -d com.apple.quarantine downloaded.app
xattr -cr ./MyApp.app # 递归清除(慎用,仅信任来源)
43. codesign — 代码签名(Mac)
功能:对应用/二进制进行签名与验证,开发分发必备。
使用场景:本地开发 App、验证签名是否有效、排查「已损坏」提示。
示例:
codesign -dv --verbose=4 MyApp.app
codesign --verify --deep --strict MyApp.app
44. security — 钥匙串与证书(Mac)
功能:管理钥匙串、证书、查找密码等(常与开发证书相关)。
使用场景:导入导出证书、查钥匙串条目、脚本化证书操作。
示例:
security find-identity -v -p codesigning
security dump-keychain
45. launchctl — 启动项与服务(Mac)
功能:加载/卸载 LaunchAgent、LaunchDaemon,管理后台服务。
使用场景:自启动脚本、排查后台进程、开发本地服务。
示例:
launchctl list | grep com.my
launchctl load ~/Library/LaunchAgents/com.example.plist
launchctl unload ~/Library/LaunchAgents/com.example.plist
46. softwareupdate — 系统更新(Mac)
功能:从命令行列出、下载、安装 macOS 系统更新。
使用场景:服务器或无 GUI 环境更新系统、脚本化更新检查。
示例:
softwareupdate -l
sudo softwareupdate -i "macOS Sonoma 14.x"
47. sysctl — 内核参数 [Mac & Linux]
功能:查看或运行时修改内核相关参数(部分需 root)。
使用场景:查 CPU/内存信息、调网络参数(Linux 更常用)。
示例:
sysctl -n hw.memsize # Mac:内存字节数
sysctl hw.ncpu
sysctl -a | grep machdep # Mac
sysctl net.ipv4.ip_forward # Linux
48. say — 文字转语音(Mac)
功能:让系统朗读指定文本,可选不同声音。
使用场景:脚本完成提醒、无障碍测试、趣味通知。
示例:
say "Build finished"
say -v Ting-Ting "你好"
49. osascript — AppleScript(Mac)
功能:执行 AppleScript 或 JavaScript for Automation,控制 macOS 应用。
使用场景:自动化 Finder、Mail、通知等系统应用。
示例:
osascript -e 'display notification "Done" with title "Task"'
osascript -e 'tell application "Finder" to activate'
50. file / stat — 文件信息 [Mac & Linux]
功能:
file:判断文件类型(文本/二进制/镜像等)stat:显示 inode、权限、时间戳等元数据
使用场景:确认下载文件类型、排查权限与时间异常。
示例:
file unknown.bin
stat -x README.md # Mac 精简格式
stat README.md # Linux
51. env / export — 环境变量 [Mac & Linux]
功能:查看或设置进程环境变量,影响子进程行为。
使用场景:配置 PATH、NODE_ENV、代理变量、临时覆盖配置。
示例:
env | grep PATH
export NODE_ENV=production
export https_proxy=http://127.0.0.1:7890
52. crontab — 定时任务 [Mac & Linux]
功能:按时间表自动执行命令(用户级 cron)。
使用场景:定时备份、清理日志、定时拉取数据。
示例:
crontab -l
crontab -e
# 每天 2 点执行:0 2 * * * /path/to/backup.sh
53. tee — 同时输出与写文件 [Mac & Linux]
功能:把标准输入同时写到终端和文件。
使用场景:安装脚本既要显示进度又要保存日志。
示例:
./install.sh 2>&1 | tee install.log
echo "ok" | tee -a status.txt
54. xargs — 构造参数列表 [Mac & Linux]
功能:将标准输入转为命令行参数,常与 find 配合。
使用场景:批量删除、批量重命名、批量处理文件。
示例:
find . -name "*.bak" -print0 | xargs -0 rm
echo {1..5} | xargs -I {} echo "item {}"
55. diff / cmp — 比较差异 [Mac & Linux]
功能:比较两个文件或目录的内容差异。
使用场景:对比配置变更、检查补丁、合并前预览。
示例:
diff file1.txt file2.txt
diff -u old.conf new.conf # unified 格式
diff -r dir1 dir2
56. ln — 链接 [Mac & Linux]
功能:创建硬链接或符号链接(软链接)。
使用场景:版本切换(如 node)、配置共享、缩短路径。
示例:
ln -s /opt/node/bin/node /usr/local/bin/node
ln -s ../shared/config.yml config.yml
57. whoami / id / groups — 用户身份 [Mac & Linux]
功能:显示当前用户、UID/GID、所属用户组。
使用场景:确认 sudo 是否生效、排查权限拒绝、写脚本判断用户。
示例:
whoami
id
groups
58. date / cal — 日期时间 [Mac & Linux]
功能:显示/格式化日期时间;cal 显示月历。
使用场景:日志时间戳、脚本生成带日期的文件名。
示例:
date
date "+%Y-%m-%d %H:%M:%S"
date -v+1d "+%Y-%m-%d" # Mac:明天
date -d "tomorrow" "+%F" # Linux
cal
59. clear / reset — 清屏 [Mac & Linux]
功能:清空终端显示区域。
使用场景:整理视觉、演示前清屏。
示例:
clear
# 或 Ctrl+L
60. tree — 目录树(需安装)[Mac & Linux]
功能:以树形结构展示目录层级。
使用场景:快速了解项目结构、文档截图。
示例:
brew install tree # Mac
sudo apt install tree # Debian/Ubuntu
tree -L 2 -I node_modules
二、Linux 常用命令
与 Mac 相同的命令已在上一节标注
[Mac & Linux],此处侧重 Linux 特有 或 用法/工具差异明显 的项。通用命令请参考 Mac 章节对应条目。
1. apt / apt-get — Debian/Ubuntu 包管理
功能:安装、升级、删除 .deb 软件包,管理系统依赖。
使用场景:在 Ubuntu/Debian 服务器上装 nginx、python、构建工具。
示例:
sudo apt update
sudo apt upgrade -y
sudo apt install nginx curl git
sudo apt remove nginx
apt search redis
apt show nginx
2. yum / dnf — RHEL/CentOS/Fedora 包管理
功能:RPM 系发行版的包管理器,dnf 为 yum 的新一代替代。
使用场景:在 CentOS、Rocky、Fedora 上安装与服务管理相关软件。
示例:
sudo dnf install httpd
sudo dnf update
sudo dnf remove httpd
dnf search php
3. pacman — Arch 包管理
功能:Arch Linux / Manjaro 的官方包管理器,滚动更新。
使用场景:Arch 桌面或服务器安装软件、系统升级。
示例:
sudo pacman -Syu # 同步并升级
sudo pacman -S nginx
pacman -Qs keyword # 本地已安装搜索
4. systemctl — systemd 服务管理
功能:启动、停止、启用、查看 systemd 管理的服务与单元。
使用场景:管理 nginx、docker、自定义 .service 开机自启。
示例:
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
sudo systemctl restart nginx
sudo systemctl stop nginx
journalctl -u nginx -f # 配合查看日志
5. journalctl — systemd 日志
功能:查看由 systemd-journald 收集的系统与服务日志。
使用场景:排查服务启动失败、查内核与应用日志。
示例:
journalctl -xe
journalctl -u docker.service --since "1 hour ago"
journalctl -f # 实时跟踪
journalctl -k # 内核日志
6. ip — 现代网络配置(推荐)
功能:查看/配置网络接口、路由、邻居表等,替代传统 ifconfig/route。
使用场景:服务器配 IP、查默认路由、排查网络(Linux 主流)。
示例:
ip addr show
ip link show
ip route show
sudo ip addr add 192.168.1.100/24 dev eth0
Mac 仍以
ifconfig为主;Linux 生产环境优先ip。
7. ss / netstat — 套接字与端口
功能:查看监听端口、TCP/UDP 连接状态。
使用场景:查 80/443 是否监听、谁连了数据库端口。
示例:
ss -tulpn
ss -tan | grep ESTAB
netstat -tulpn # 部分系统需 net-tools
8. ufw / firewall-cmd / iptables — 防火墙
功能:配置主机防火墙规则,放行或拒绝端口。
使用场景:云服务器只开放 22/80/443、限制内网访问。
示例:
# UFW (Ubuntu 常见)
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status
# firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
9. useradd / usermod / userdel — 用户管理
功能:创建、修改、删除系统用户及主组。
使用场景:新建部署账号、禁止登录、指定 shell。
示例:
sudo useradd -m -s /bin/bash deploy
sudo passwd deploy
sudo usermod -aG docker deploy
sudo userdel -r olduser
Mac 用户管理多用「系统设置」或
dscl,命令习惯不同。
10. passwd — 修改密码 [Mac & Linux]
功能:修改用户登录密码(Linux 上更常用于批量账号)。
使用场景:初始化服务器账号、定期改密。
示例:
passwd
sudo passwd deploy
11. free — 内存使用
功能:显示物理内存、swap 使用量(Linux 专用直观工具)。
使用场景:排查 OOM、判断是否需要加 swap 或扩容。
示例:
free -h
free -m -s 5 # 每 5 秒刷新
Mac 可用
vm_stat或top;无free命令。
12. uname — 系统信息 [Mac & Linux]
功能:显示内核名称、版本、架构等。
使用场景:确认发行版内核、脚本判断架构。
示例:
uname -a
uname -m # x86_64 / arm64
13. lsblk / fdisk / blkid — 块设备与分区
功能:列出块设备、分区表、文件系统 UUID/类型。
使用场景:挂新盘、分区、制作启动盘、写 /etc/fstab。
示例:
lsblk
sudo fdisk -l
sudo blkid
14. mount / umount — 挂载文件系统 [Mac & Linux]
功能:将设备或镜像挂载到目录树,或卸载。
使用场景:挂载数据盘、ISO、NFS 共享(Linux 服务器常见)。
示例:
sudo mount /dev/sdb1 /mnt/data
mount | grep /mnt
sudo umount /mnt/data
# /etc/fstab 持久挂载
Mac 常用
diskutil mount;Linux 服务器多用mount+fstab。
15. df / du — 磁盘空间
见 Mac 章节 #29,标记为 [Mac & Linux]。
Linux 补充示例:
df -hT # 显示文件系统类型
du -x --max-depth=1 /var # 仅当前文件系统
16. dmesg — 内核环形缓冲区
功能:查看内核启动与硬件相关消息(驱动、磁盘、USB 等)。
使用场景:机器启动异常、新硬件不识别、内核报错。
示例:
dmesg | tail -50
dmesg -T # 人类可读时间(较新内核)
sudo dmesg -w # 实时跟踪
17. strace / ltrace — 系统调用跟踪
功能:跟踪进程执行的系统调用/库调用,用于深度调试。
使用场景:程序卡死、权限错误、查打开了哪些文件。
示例:
strace -e open,openat ./myapp
strace -p 1234 # 附加到运行中进程
Mac 对应工具为
dtruss/dtrace(需 SIP 注意)。
18. nohup / disown — 后台常驻 [Mac & Linux]
功能:终端关闭后仍继续运行任务,或从 shell 作业表中脱离。
使用场景:服务器上长时间跑脚本、训练任务、批量导入。
示例:
nohup ./long-task.sh > out.log 2>&1 &
disown %1
19. screen / tmux — 终端复用
功能:多窗口/会话保持,SSH 断开后任务不中断。
使用场景:远程服务器维护、多 pane 同时看日志与编辑。
示例:
tmux new -s work
tmux attach -t work
# Ctrl+b d 脱离;Ctrl+b % 分屏
screen -S deploy
20. rsync — 增量同步 [Mac & Linux]
功能:高效同步目录(只传差异部分),支持 SSH。
使用场景:备份、部署静态资源、镜像站点目录。
示例:
rsync -avz ./dist/ user@server:/var/www/
rsync -av --delete src/ backup/ # 镜像同步(慎用 delete)
21. wget — 下载 [Mac & Linux]
功能:非交互式下载文件,支持递归(需慎用)。
使用场景:服务器无浏览器时下载安装包、镜像文件。
示例:
wget https://example.com/file.tar.gz
wget -c https://example.com/large.iso # 断点续传
Mac 默认无
wget,可brew install wget。
22. nc (netcat) — 网络瑞士军刀 [Mac & Linux]
功能:端口探测、简单监听、传文件、调试 TCP/UDP。
使用场景:测端口是否开放、临时起监听服务。
示例:
nc -zv example.com 80
nc -l 9999 # 监听 9999
23. dig / nslookup / host — DNS 查询 [Mac & Linux]
功能:查询 DNS 记录,排查域名解析问题。
使用场景:域名是否生效、查 A/AAAA/MX/TXT 记录。
示例:
dig example.com
dig +short example.com A
nslookup example.com
host example.com
24. iptables / nft — 底层防火墙
功能:直接操作 netfilter 规则(比 ufw 更底层)。
使用场景:复杂 NAT、端口转发、自定义链(需熟悉网络)。
示例:
sudo iptables -L -n -v
# 生产环境建议配合 iptables-save / 配置管理
sudo nft list ruleset # nftables 新一代
25. locate / updatedb — 文件名数据库搜索
功能:通过预建索引快速按路径名找文件(非内容搜索)。
使用场景:不记得文件在哪个目录,但记得文件名。
示例:
sudo updatedb
locate nginx.conf
Mac 对应为
mdfind(Spotlight),见 Mac #41。
26. watch — 周期性执行命令
功能:每隔固定秒数刷新执行同一命令并全屏显示。
使用场景:观察 GPU/内存、队列长度、文件变化。
示例:
watch -n 1 free -h
watch -n 2 'ls -l /tmp'
Mac 可
brew install watch。
27. fuser / kill — 按文件/端口杀进程
功能:fuser 显示使用某文件/套接字的进程;配合 -k 可结束。
使用场景:磁盘设备忙无法卸载、释放被占用文件。
示例:
fuser -v /mnt/data
sudo fuser -k 8080/tcp
28. visudo — 安全编辑 sudoers
功能:用默认编辑器打开 /etc/sudoers 并做语法检查,防止配置错误锁死。
使用场景:给部署用户免密 sudo、限制只能执行特定命令。
示例:
sudo visudo
# 添加:deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
29. timedatectl — 时区与时间同步
功能:查看/设置系统时区、NTP 同步状态(systemd 系)。
使用场景:云主机时区不对、日志时间戳混乱。
示例:
timedatectl
sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-ntp true
30. hostnamectl — 主机名
功能:查看或设置静态主机名、图标化描述等。
使用场景:批量装机统一命名、修改 /etc/hostname 的便捷方式。
示例:
hostnamectl
sudo hostnamectl set-hostname web-01
31. semanage / getenforce — SELinux(RHEL 系)
功能:查看/配置 SELinux 策略与上下文。
使用场景:CentOS 上 nginx 无法读自定义目录、端口被拒绝。
示例:
getenforce
sudo setenforce 0 # 临时 Permissive(排障用)
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www(/.*)?"
sudo restorecon -Rv /var/www
32. docker / podman — 容器 [Mac & Linux]
功能:运行与管理容器化应用(Mac 多通过 Docker Desktop)。
使用场景:本地开发环境、CI、微服务部署。
示例:
docker ps -a
docker run -d -p 8080:80 nginx
docker compose up -d
docker logs -f container_name
podman run hello-world # 无守护进程,Linux 常见
33. git — 版本控制 [Mac & Linux]
功能:分布式版本管理,跟踪代码变更、协作、分支合并。
使用场景:日常开发必备,与平台无关。
示例:
git status
git add . && git commit -m "fix: handle timeout"
git pull --rebase origin main
git log --oneline -10
三、Mac 与 Linux 差异速记
| 场景 | Mac | Linux |
|---|---|---|
| 包管理 | brew | apt / dnf / pacman |
| 打开文件/URL | open | xdg-open |
| 剪贴板 | pbcopy / pbpaste | xclip / xsel(需安装) |
| 服务管理 | launchctl | systemctl |
| 找文件(名) | mdfind | locate |
| 网络接口 | ifconfig | ip |
| 磁盘管理 | diskutil | lsblk + fdisk + mount |
| sed 原地替换 | sed -i '' | sed -i |
| 明天日期 | date -v+1d | date -d tomorrow |
四、使用建议
- 不确定时先
man:man 命令名是最权威的说明。 - 危险操作先预览:
rm -rf、find -delete、chmod -R等先用echo或去掉-delete确认范围。 - 脚本注意兼容性:
sed -i、日期参数、部分stat选项在 Mac/Linux 上不同,可用条件判断或安装 GNU 版本(如brew install gnu-sed并以gsed调用)。