两类场景总在提醒我该整理一份命令清单。一类是日常写代码,某个命令用得不够频繁,参数记不住,每次都要重新搜索引擎查一遍。

另一类更麻烦:公司的测试服务器系统版本老,很多现代工具装不上,只能用回那些”老式”命令。这些命令恰恰因为平时用不到,用法早就生疏了,真要用的时候翻半天才想起来参数怎么写。

这篇是一份分类地图,把常用命令和工具按场景归类,每条一两句话说清楚它解决什么问题、默认行为是什么。已经写过详细教程的条目直接跳转过去看用法,还没写的先记住名字,用到时候自己查 man--help

文件与目录:从「东西在哪」查起

  • ls:列出目录内容,默认不显示隐藏文件(. 开头),常配 -la 看详情和隐藏项
  • find:按名称、类型、时间、大小等条件递归查找文件,语法历史包袱重,选项多但记不住
  • fdfind 的现代替代,默认按名称模糊匹配、自动跳过 .gitignore 里的文件,语法更接近自然语言
  • tree:以树状结构展示目录层级,排查项目结构时比 ls -R 直观
  • du:统计文件/目录占用的磁盘空间,-h 转成人类可读单位,-s 只看汇总不展开子目录
  • df:查看文件系统整体的磁盘使用率,和 du(查某个目录/文件多大)不是一回事,df 是”盘还剩多少”
  • file:判断文件的真实类型,不依赖扩展名,遇到没有后缀的文件时有用
  • stat:查看文件的详细元信息(大小、权限、三个时间戳),比 ls -l 信息更全

终端里用图形化三栏界面管理文件,比裸敲 ls/cd 更高效,见 yazi:终端里的三栏文件管理器

文本处理与搜索:抓文本、转格式、过滤结果

  • grep:按正则匹配文本行,默认不递归,只在当前目录搜要加 -r
  • ripgrep(rg)grep 的现代替代,默认递归搜索、自动遵循 .gitignore、速度快一个数量级,是本博客文章里推荐搜索时的首选
  • sed:流编辑器,按行对文本做替换、删除、插入,最常见用法是 sed 's/旧/新/g' 批量替换
  • awk:按列处理结构化文本(日志、CSV),比 sed 更适合”取第几列、按条件过滤”这类场景
  • cut / sort / uniq:三个小工具常一起用——cut 截取列,sort 排序,uniq -c 统计重复次数,组合起来能替代不少 awk 脚本
  • wc:统计行数(-l)、单词数、字节数,比写 awk 判断行数快
  • jq:命令行的 JSON 处理器,从 API 响应或日志里提取字段、过滤、重新格式化

grep 换成 ripgrep,配合 fzf 模糊筛选、fd 找文件,是效率提升最直接的一步,完整用法见 终端搜索三件套:fzf + ripgrep + fd,以及 jq

进程与系统资源:谁在跑、吃了多少

  • ps:查看当前进程快照,ps aux 是最常用的组合,看全部用户的所有进程
  • top / htop:实时监控进程和资源占用,htoptop 的现代替代,界面更直观、支持鼠标操作和树状显示父子进程
  • kill / pkill:给进程发信号,默认发 SIGTERM(15,请求优雅退出),-9SIGKILL(强制杀死,进程来不及清理资源)
  • nice / renice:调整进程的 CPU 调度优先级,数值越低优先级越高
  • systemctl:管理 systemd 服务的启动、停止、开机自启和状态查看,是现代 Linux 发行版的服务管理标准
  • journalctl:查看 systemd 管理的日志,-u 服务名 只看某个服务、-f 实时跟踪,取代了传统的 /var/log/ 逐个文件翻

端口、进程、日志三类问题的完整排查流程(含 sslsof),见 Linux 服务器问题排查:端口、进程、日志常用命令速查

网络排查:连不上、超时、端口占用先查这些

  • curl:发起 HTTP 请求、测试接口连通性,调试 API 时最常用的工具,不带参数默认发 GET
  • wget:下载文件,相比 curl 更适合直接保存到本地、支持断点续传
  • ss:查看 socket 连接状态(监听端口、已建立连接),是 netstat 的现代替代,速度更快、输出更简洁
  • lsof:列出进程打开的文件(Linux 下”一切皆文件”,网络连接也算),常用来反查”哪个进程占用了这个端口”
  • ping:测试到目标主机的网络连通性和延迟,基于 ICMP,某些网络环境会屏蔽
  • traceroute:追踪数据包到目标主机经过的每一跳路由,定位网络中间环节的问题
  • dig / nslookup:查询 DNS 解析结果,dig 输出更详细,排查域名解析问题的首选

sslsof 的实际排查场景(比如揪出占用 8080 端口的进程),同样在 Linux 服务器问题排查 里有完整示例。

权限与用户管理:谁能做什么

  • chmod:修改文件/目录的读写执行权限,数字模式(755)和符号模式(u+x)两种写法
  • chown:修改文件的所有者和所属组,格式是 chown 用户:组 文件
  • sudo:以其他用户(默认 root)身份执行单条命令,比直接切到 root 更安全,操作有日志可查
  • su:切换到另一个用户的完整 shell 会话,su - 会同时加载目标用户的环境变量
  • useradd / usermod:创建用户、修改用户属性(所属组、家目录、shell),发行版不同细节略有差异
  • id / whoami:查看当前用户的身份信息,id 显示 UID/GID 和所属组,whoami 只输出用户名

包管理与服务安装:装什么、从哪装

  • apt:Debian / Ubuntu 系发行版的包管理器,apt update 刷新源、apt install 装包
  • yum / dnf:RHEL / CentOS / Fedora 系的包管理器,dnfyum 的继任者,新版本发行版默认用 dnf
  • brew:macOS(以及部分 Linux 发行版)的包管理器,不需要 sudo,装在用户目录下
  • systemctl enable:把服务设为开机自启,和上面”进程与系统资源”里的 systemctl status 是同一个命令的不同用法——一个管”装完之后要不要自启”,一个管”现在是什么状态”

压缩与传输:打包、发送、同步

  • tar:打包(不压缩)或打包并压缩(配合 -z/-j 调用 gzip/bzip2),Linux 下最常见的归档格式是 .tar.gz
  • zip / unzip:处理 .zip 格式,跨平台兼容性比 tar 好,Windows 用户对接时常用这个
  • scp:基于 SSH 的文件拷贝,语法接近 cp,适合偶尔传一两个文件
  • rsync:增量同步工具,只传输变化的部分,同步大目录或做定期备份时比 scp 快得多,很多云盘同步工具底层就是它

Git 命令行工具链

Shell 环境与效率工具

这一类不是单个命令,而是整套终端使用体验的优化,各自有完整教程:

这份地图会持续更新

权限管理、包管理、压缩传输这几类目前还只有条目没有详细文章,接下来会陆续把 chmod/chown 的实际排坑场景、rsync 的增量同步参数、tar 的常见坑逐个写成独立教程,写完就回来把对应条目换成链接。