← 返回列表

Mac & Linux 命令速查

2026-05-18

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]

功能:查看或设置进程环境变量,影响子进程行为。

使用场景:配置 PATHNODE_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 系发行版的包管理器,dnfyum 的新一代替代。

使用场景:在 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_stattop;无 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 差异速记

场景MacLinux
包管理brewapt / dnf / pacman
打开文件/URLopenxdg-open
剪贴板pbcopy / pbpastexclip / xsel(需安装)
服务管理launchctlsystemctl
找文件(名)mdfindlocate
网络接口ifconfigip
磁盘管理diskutillsblk + fdisk + mount
sed 原地替换sed -i ''sed -i
明天日期date -v+1ddate -d tomorrow

四、使用建议

  1. 不确定时先 manman 命令名 是最权威的说明。
  2. 危险操作先预览rm -rffind -deletechmod -R 等先用 echo 或去掉 -delete 确认范围。
  3. 脚本注意兼容性sed -i、日期参数、部分 stat 选项在 Mac/Linux 上不同,可用条件判断或安装 GNU 版本(如 brew install gnu-sed 并以 gsed 调用)。