Linux 常见命令与工具地图(备忘录)
两类场景总在提醒我该整理一份命令清单。一类是日常写代码,某个命令用得不够频繁,参数记不住,每次都要重新搜索引擎查一遍。
另一类更麻烦:公司的测试服务器系统版本老,很多现代工具装不上,只能用回那些”老式”命令。这些命令恰恰因为平时用不到,用法早就生疏了,真要用的时候翻半天才想起来参数怎么写。
这篇是一份分类地图,把常用命令和工具按场景归类,每条一两句话说清楚它解决什么问题、默认行为是什么。已经写过详细教程的条目直接跳转过去看用法,还没写的先记住名字,用到时候自己查 man 或 --help。
文件与目录:从「东西在哪」查起
- ls:列出目录内容,默认不显示隐藏文件(
.开头),常配-la看详情和隐藏项 - find:按名称、类型、时间、大小等条件递归查找文件,语法历史包袱重,选项多但记不住
- fd:
find的现代替代,默认按名称模糊匹配、自动跳过.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:实时监控进程和资源占用,
htop是top的现代替代,界面更直观、支持鼠标操作和树状显示父子进程 - kill / pkill:给进程发信号,默认发
SIGTERM(15,请求优雅退出),-9是SIGKILL(强制杀死,进程来不及清理资源) - nice / renice:调整进程的 CPU 调度优先级,数值越低优先级越高
- systemctl:管理 systemd 服务的启动、停止、开机自启和状态查看,是现代 Linux 发行版的服务管理标准
- journalctl:查看 systemd 管理的日志,
-u 服务名只看某个服务、-f实时跟踪,取代了传统的/var/log/逐个文件翻
端口、进程、日志三类问题的完整排查流程(含
ss、lsof),见 Linux 服务器问题排查:端口、进程、日志常用命令速查。
网络排查:连不上、超时、端口占用先查这些
- curl:发起 HTTP 请求、测试接口连通性,调试 API 时最常用的工具,不带参数默认发 GET
- wget:下载文件,相比
curl更适合直接保存到本地、支持断点续传 - ss:查看 socket 连接状态(监听端口、已建立连接),是
netstat的现代替代,速度更快、输出更简洁 - lsof:列出进程打开的文件(Linux 下”一切皆文件”,网络连接也算),常用来反查”哪个进程占用了这个端口”
- ping:测试到目标主机的网络连通性和延迟,基于 ICMP,某些网络环境会屏蔽
- traceroute:追踪数据包到目标主机经过的每一跳路由,定位网络中间环节的问题
- dig / nslookup:查询 DNS 解析结果,
dig输出更详细,排查域名解析问题的首选
ss和lsof的实际排查场景(比如揪出占用 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 系的包管理器,
dnf是yum的继任者,新版本发行版默认用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 命令行工具链
- git-delta / lazygit / gh:分别是更好看的 diff 输出、终端图形化 Git 客户端、GitHub 官方 CLI,三者组合能覆盖日常 Git 操作的大部分场景,见 终端里的 Git:git-delta + lazygit + gh
- git tag:给某个提交打标签,常用于标记版本发布节点,完整命令和使用场景见 git tag 常用命令与使用场景
Shell 环境与效率工具
这一类不是单个命令,而是整套终端使用体验的优化,各自有完整教程:
- atuin + zoxide:替代默认的 shell 历史(
history)和目录跳转(cd),前者把历史记录存进数据库支持模糊搜索,后者记住常去的目录、输入片段就能跳转,见 Shell 历史与目录跳转的现代替代:atuin + zoxide - kitty + Zim:终端模拟器和 Zsh 配置框架的组合,解决”终端本身好不好用”和”命令行编辑体验”两个问题,见 Mac 终端基础配置:kitty + Zim
- fastfetch + pokemon-colorscripts:终端启动界面的系统信息展示和装饰,纯提升使用体验,见 终端启动界面:fastfetch + pokemon-colorscripts
- Neovim + LazyVim:终端里的代码编辑器,LazyVim 是开箱即用的配置发行版,免去从零攒 Neovim 配置的过程,见 从零开始用 Neovim:LazyVim 让配置不再是障碍
- CLI 里集成 AI:把大模型接进命令行工作流,直接在终端里提问、生成命令,见 cli 中集成 ai,以 deepseek 为例
- 更多单点工具(bat、eza 等替代品)的推荐清单,见 Mac 终端 CLI 工具推荐:那些让命令行效率翻倍的家伙
这份地图会持续更新
权限管理、包管理、压缩传输这几类目前还只有条目没有详细文章,接下来会陆续把 chmod/chown 的实际排坑场景、rsync 的增量同步参数、tar 的常见坑逐个写成独立教程,写完就回来把对应条目换成链接。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Code Water!










