5316 字
27 分钟
Linux 常用命令速查手册:从入门到精通的 100+ 命令 | 2026 服务器运维必备
Linux 命令行是服务器运维和开发工作中最基础也最重要的技能。无论你是在管理 VPS、配置 Docker、部署网站,还是排查网络问题,都离不开命令行操作。

本文整理了 100+ 条 Linux 最常用命令,按功能分类,每条命令附带实例和常用参数说明,既适合初学者系统学习,也适合有经验的用户日常速查。
一、文件与目录管理
1.1 ls — 列出目录内容
# 基本用法ls # 列出当前目录文件ls /etc # 列出指定目录ls -l # 详细信息(权限、大小、修改时间)ls -la # 包含隐藏文件(以 . 开头的文件)ls -lh # 文件大小以人类可读格式(KB/MB/GB)ls -lt # 按修改时间排序(最新在前)ls -ltr # 按修改时间排序(最旧在前)ls -R # 递归列出子目录ls -1 # 每行一个文件1.2 cd — 切换目录
cd /var/log # 切换到绝对路径cd .. # 返回上一级目录cd ../.. # 返回上两级目录cd ~ # 回到用户主目录cd - # 返回上次所在目录cd # 不带参数,回到主目录1.3 pwd — 显示当前路径
pwd # 显示当前工作目录的绝对路径pwd -P # 显示物理路径(解析符号链接)1.4 mkdir — 创建目录
mkdir newdir # 创建单个目录mkdir -p a/b/c # 递归创建多级目录(父目录不存在时自动创建)mkdir -m 755 mydir # 创建时指定权限mkdir dir1 dir2 dir3 # 同时创建多个目录1.5 cp — 复制文件和目录
cp file.txt /tmp/ # 复制文件到指定目录cp file.txt backup.txt # 复制并重命名cp -r mydir /tmp/ # 递归复制整个目录cp -i file.txt /tmp/ # 覆盖前提示确认cp -u file.txt /tmp/ # 仅在源文件更新时才复制cp -v file.txt /tmp/ # 显示复制过程cp -a mydir/ /tmp/mydir/ # 归档模式(保留权限、时间戳、符号链接)1.6 mv — 移动/重命名
mv old.txt new.txt # 重命名mv file.txt /tmp/ # 移动文件mv dir1 /tmp/ # 移动目录(无需 -r)mv -i old.txt new.txt # 覆盖前提示确认mv -u old.txt new.txt # 仅在源文件更新时才移动mv *.txt /tmp/texts/ # 批量移动所有 .txt 文件1.7 rm — 删除文件
rm file.txt # 删除文件rm -i file.txt # 删除前确认rm -f file.txt # 强制删除(不提示)rm -r mydir # 递归删除目录rm -rf mydir # 强制递归删除(⚠️ 危险操作!)rm *.log # 删除所有 .log 文件rm -- -weird-file # 删除以 - 开头的文件⚠️ 警告:
rm -rf不可恢复,执行前务必确认路径。尤其不要在/或~下直接使用。
1.8 find — 查找文件
# 按名称查找find /etc -name "*.conf" # 在 /etc 下查找所有 .conf 文件find . -name "test*" # 在当前目录查找以 test 开头的文件find . -iname "README*" # 忽略大小写
# 按类型查找find . -type f -name "*.py" # 仅查找文件find . -type d -name "test" # 仅查找目录find . -type l # 查找符号链接
# 按时间查找find . -mtime -7 # 7 天内修改过的文件find . -mtime +30 # 30 天前修改过的文件find . -mmin -60 # 60 分钟内修改过的文件find . -newer ref.txt # 比 ref.txt 更新的文件
# 按大小查找find . -size +100M # 大于 100MB 的文件find . -size -1k # 小于 1KB 的文件
# 按权限/用户查找find / -user root -name "*.sh" # root 用户拥有的 .sh 文件find . -perm 644 # 权限为 644 的文件
# 找到后执行操作find . -name "*.tmp" -delete # 找到后直接删除find . -name "*.log" -exec gzip {} \; # 找到后 gzip 压缩find . -name "*.py" -exec wc -l {} \; # 统计每个 .py 文件行数find . -name "*.py" -exec grep "TODO" {} \; # 在找到的文件中搜索1.9 touch — 创建空文件 / 更新时间戳
touch newfile.txt # 创建空文件touch -a file.txt # 仅更新访问时间touch -m file.txt # 仅更新修改时间touch -t 202601010000 file # 设置为指定时间touch file{1..5}.txt # 批量创建 file1.txt 到 file5.txt1.10 tree — 树状显示目录结构
tree # 显示当前目录的树状结构tree -L 2 # 只显示 2 层深度tree -d # 只显示目录tree -a # 包含隐藏文件tree -h # 显示文件大小tree --dirsfirst # 目录排在文件前面二、文件查看与编辑
2.1 cat — 查看/拼接文件
cat file.txt # 显示文件内容cat -n file.txt # 显示行号cat -b file.txt # 仅非空行编号cat file1 file2 > merged # 合并多个文件cat -s file.txt # 压缩连续空行为一行cat > newfile.txt # 从标准输入创建文件(Ctrl+D 结束)2.2 less / more — 分页查看
less file.txt # 分页查看(推荐,支持上下滚动) # less 内部快捷键: # 空格/f 向下翻页 # b 向上翻页 # /pattern 向下搜索 # ?pattern 向上搜索 # n/N 下一个/上一个匹配 # g/G 跳到开头/结尾 # q 退出
less -N file.txt # 显示行号less +F file.txt # 类似 tail -f,实时追踪2.3 head / tail — 查看头部/尾部
head file.txt # 前 10 行head -n 20 file.txt # 前 20 行head -c 100 file.txt # 前 100 字节
tail file.txt # 后 10 行tail -n 50 file.txt # 后 50 行tail -f /var/log/syslog # 实时追踪文件更新(运维必备)tail -f -n 100 app.log # 从最后 100 行开始追踪tail -F app.log # -F 比 -f 更健壮(文件轮转时也能追踪)2.4 wc — 统计行/词/字节
wc file.txt # 行数 词数 字节数wc -l file.txt # 仅行数wc -w file.txt # 仅词数wc -c file.txt # 仅字节数wc -m file.txt # 仅字符数ls -l | wc -l # 统计当前目录文件数2.5 diff — 比较文件差异
diff file1.txt file2.txt # 比较两个文件diff -u file1.txt file2.txt # unified 格式(更易读)diff -r dir1/ dir2/ # 递归比较两个目录diff --color file1.txt file2.txt # 彩色输出三、文本处理三剑客
3.1 grep — 文本搜索
# 基础搜索grep "error" app.log # 在文件中搜索 "error"grep -i "error" app.log # 忽略大小写grep -v "debug" app.log # 反向匹配(不包含 debug 的行)grep -c "error" app.log # 只输出匹配行数grep -n "error" app.log # 显示行号grep -r "TODO" src/ # 递归搜索目录grep -w "cat" file.txt # 全词匹配(不匹配 category)
# 正则匹配grep "^Error" app.log # 以 Error 开头的行grep "error$" app.log # 以 error 结尾的行grep -E "error|warning" app.log # 扩展正则(支持 |)grep -E "[0-9]{4}-[0-9]{2}" file # 匹配日期格式
# 上下文grep -A 3 "error" app.log # 匹配行 + 后 3 行grep -B 3 "error" app.log # 匹配行 + 前 3 行grep -C 3 "error" app.log # 匹配行 + 前后各 3 行
# 常用组合grep -rn "function" --include="*.py" . # 递归搜索 Python 文件ps aux | grep nginx # 在进程列表中搜索 nginxgrep -v "^#" /etc/fstab # 查看配置文件(排除注释行)grep -v "^$" file.txt # 排除空行3.2 sed — 流编辑器
# 替换sed 's/old/new/' file.txt # 替换每行第一个匹配sed 's/old/new/g' file.txt # 替换所有匹配sed 's/old/new/gi' file.txt # 忽略大小写替换sed 's/old/new/3' file.txt # 替换每行第 3 个匹配sed -i 's/old/new/g' file.txt # 直接修改文件(⚠️ 谨慎)sed -i.bak 's/old/new/g' file.txt # 修改前备份原文件
# 删除sed '/^$/d' file.txt # 删除空行sed '/^#/d' file.txt # 删除注释行sed '3d' file.txt # 删除第 3 行sed '2,5d' file.txt # 删除第 2-5 行sed '$d' file.txt # 删除最后一行
# 插入/追加sed '2i\new line' file.txt # 在第 2 行前插入sed '2a\new line' file.txt # 在第 2 行后追加
# 打印指定行sed -n '5,10p' file.txt # 打印第 5-10 行sed -n '/pattern/p' file.txt # 打印匹配行
# 常用组合sed -n '1,5p' /etc/passwd # 查看文件前 5 行echo "hello world" | sed 's/world/Linux/' # 管道中使用3.3 awk — 文本分析
# 基础用法awk '{print $1}' file.txt # 打印第一列awk '{print $1, $3}' file.txt # 打印第一和第三列awk '{print $NF}' file.txt # 打印最后一列awk -F: '{print $1}' /etc/passwd # 以 : 为分隔符,打印用户名awk -F',' '{print $2}' data.csv # CSV 文件第二列
# 条件过滤awk '$3 > 100' file.txt # 第三列大于 100 的行awk '$1 == "ERROR" {print $0}' log # 第一列等于 ERROR 的行awk 'NR > 1' file.txt # 跳过第一行(表头)
# 计算awk '{sum += $1} END {print sum}' numbers # 求第一列总和awk '{sum += $2} END {print sum/NR}' file # 求第二列平均值awk 'END {print NR}' file.txt # 总行数
# 格式化输出awk '{printf "%-10s %5d\n", $1, $2}' file.txt # 格式化打印
# 实战:分析 Nginx 访问日志awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10# 统计访问量前 10 的 IP
awk -F'"' '{print $2}' access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10# 统计请求方法分布四、进程管理
4.1 ps — 查看进程
ps aux # 查看所有进程(BSD 语法)ps -ef # 查看所有进程(System V 语法)ps aux | grep nginx # 查找特定进程ps -u root # 查看 root 用户的进程ps -p 1234 # 查看指定 PID 的进程ps -o pid,ppid,cmd -p 1234 # 自定义输出格式4.2 top / htop — 实时进程监控
top # 实时进程监控 # top 内部快捷键: # P 按 CPU 排序 # M 按内存排序 # k 杀死进程 # 1 显示各 CPU 核心 # q 退出
htop # top 的增强版(需要安装) # 支持鼠标操作、颜色显示、树状结构4.3 kill — 终止进程
kill 1234 # 发送 SIGTERM(优雅终止)kill -9 1234 # 发送 SIGKILL(强制终止)kill -15 1234 # 发送 SIGTERM(同 kill 1234)kill -HUP 1234 # 发送 SIGHUP(重载配置)kill -l # 列出所有信号killall nginx # 按进程名终止pkill -f "python app.py" # 按完整命令行匹配终止4.4 jobs / bg / fg / nohup — 后台任务
command & # 后台运行Ctrl+Z # 暂停前台任务jobs # 查看后台任务jobs -l # 包含 PIDbg %1 # 将任务 1 放到后台继续运行fg %1 # 将任务 1 调到前台nohup python app.py & # 后台运行(忽略挂断信号,输出到 nohup.out)nohup ./server > server.log 2>&1 & # 后台运行,重定向输出disown -h %1 # 从 jobs 中移除(防终端关闭后终止)4.5 systemctl — 服务管理
systemctl status nginx # 查看服务状态systemctl start nginx # 启动服务systemctl stop nginx # 停止服务systemctl restart nginx # 重启服务systemctl reload nginx # 重载配置(不中断连接)systemctl enable nginx # 设置开机自启systemctl disable nginx # 取消开机自启systemctl list-units --type=service --state=running # 列出运行中的服务systemctl list-unit-files --type=service --state=enabled # 列出开机自启服务五、网络工具
5.1 curl — HTTP 请求
# 基础请求curl https://api.example.com # GET 请求curl -X POST https://api.example.com # POST 请求curl -d "name=Alice" https://api.example.com # 发送表单数据curl -H "Content-Type: application/json" \ -d '{"name":"Alice"}' \ https://api.example.com # 发送 JSON
# 常用参数curl -i https://example.com # 显示响应头curl -o file.zip https://example.com/file.zip # 下载到文件curl -O https://example.com/file.zip # 用原始文件名下载curl -L https://short.url/abc # 跟随重定向curl -s https://example.com # 静默模式(不显示进度)curl -w "%{http_code}\n" -o /dev/null -s https://example.com # 只输出状态码curl -u user:pass https://example.com # 基本认证curl -x http://proxy:8080 https://example.com # 使用代理curl --connect-timeout 5 https://example.com # 连接超时 5 秒
# 调试curl -v https://example.com # 显示详细通信过程curl -k https://self-signed.example.com # 跳过 SSL 验证5.2 wget — 下载工具
wget https://example.com/file.zip # 下载文件wget -O custom_name.zip URL # 指定保存文件名wget -c URL # 断点续传wget -r -np https://example.com/docs/ # 递归下载(不遍历上级)wget -m https://example.com/ # 镜像网站wget -q URL # 静默模式wget -b URL # 后台下载wget --limit-rate=200k URL # 限制下载速度wget --user=user --password=pass URL # 认证下载5.3 网络诊断
# ping — 测试连通性ping -c 4 google.com # 发送 4 个包后停止ping -i 0.5 google.com # 每 0.5 秒一次
# ss / netstat — 查看网络连接ss -tlnp # 查看监听中的 TCP 端口(推荐)ss -tunlp # TCP + UDPss -t state established # 已建立的连接netstat -tlnp # 旧版替代(ss 更快)netstat -anp | grep :80 # 查看端口 80 的连接
# dig / nslookup — DNS 查询dig example.com # 查询 A 记录dig @8.8.8.8 example.com # 指定 DNS 服务器dig example.com MX # 查询 MX 记录dig example.com +short # 简洁输出nslookup example.com # 交互式 DNS 查询
# traceroute — 路由追踪traceroute google.com # 追踪网络路径mtr google.com # 交互式路由追踪(推荐安装)
# ip — 网络接口管理ip addr # 查看 IP 地址ip route # 查看路由表ip link show # 查看网络接口ip link set eth0 up # 启用网卡六、磁盘与存储
6.1 df — 查看磁盘使用
df -h # 人类可读格式(GB/MB)df -H # 以 1000 为单位(而非 1024)df -T # 显示文件系统类型df -i # 显示 inode 使用情况df -x tmpfs # 排除 tmpfs 类型6.2 du — 查看目录大小
du -sh /var/log # 查看目录总大小(人类可读)du -sh /* # 查看根目录下各目录大小du -h --max-depth=1 / # 查看一层深度的目录大小du -ah /var | sort -rh | head -20 # 找出最大的 20 个文件/目录du -sh ./* | sort -rh # 当前目录按大小排序6.3 mount / umount — 挂载/卸载
mount # 查看已挂载的文件系统mount /dev/sdb1 /mnt/usb # 挂载设备mount -t ext4 /dev/sdb1 /mnt/usb # 指定文件系统类型mount -o ro /dev/sdb1 /mnt/usb # 只读挂载umount /mnt/usb # 卸载umount -l /mnt/usb # 懒卸载(等忙完再卸)6.4 fdisk / lsblk — 磁盘分区
lsblk # 列出块设备(推荐,清晰)fdisk -l # 列出所有磁盘分区lsblk -f # 包含文件系统信息七、用户与权限
7.1 chmod — 修改权限
# 数字方式(推荐)chmod 755 script.sh # rwxr-xr-xchmod 644 file.txt # rw-r--r--chmod 600 id_rsa # rw-------(私钥权限)chmod 777 shared/ # rwxrwxrwx(⚠️ 不推荐)chmod -R 755 mydir/ # 递归修改目录
# 符号方式chmod u+x script.sh # 所有者增加执行权限chmod g-w file.txt # 组去除写权限chmod o+r file.txt # 其他用户增加读权限chmod a+x script.sh # 所有用户增加执行权限chmod u=rwx,g=rx,o= file # 直接设置权限
# 权限数字对照:# r=4 w=2 x=1# 7=rwx 6=rw- 5=r-x 4=r-- 3=-wx 2=-w- 1=--x 0=---7.2 chown — 修改所有者
chown alice file.txt # 修改所有者chown alice:devs file.txt # 修改所有者和组chown :devs file.txt # 仅修改组chown -R alice:alice mydir/ # 递归修改chgrp devs file.txt # 仅修改组(chown 的简化版)7.3 sudo — 以管理员执行
sudo command # 以 root 权限执行sudo -i # 进入 root 交互式 shellsudo -u alice command # 以指定用户执行sudo !! # 用 sudo 重新执行上一条命令sudo -l # 查看当前用户的 sudo 权限7.4 用户管理
# 添加用户useradd -m -s /bin/bash alice # 创建用户并生成主目录passwd alice # 设置密码usermod -aG docker alice # 将用户加入 docker 组
# 删除用户userdel -r alice # 删除用户并移除主目录
# 查看用户信息id alice # 查看用户 ID 和组groups alice # 查看用户所属组who # 查看当前登录用户whoami # 当前用户名last # 查看登录历史八、压缩与解压
8.1 tar — 归档
# .tar.gz(最常用)tar -czvf archive.tar.gz dir/ # 压缩tar -xzvf archive.tar.gz # 解压tar -xzvf archive.tar.gz -C /tmp/ # 解压到指定目录
# .tar.bz2(压缩率更高,速度更慢)tar -cjvf archive.tar.bz2 dir/ # 压缩tar -xjvf archive.tar.bz2 # 解压
# .tar.xz(压缩率最高)tar -cJvf archive.tar.xz dir/ # 压缩tar -xJvf archive.tar.xz # 解压
# 查看/追加tar -tzvf archive.tar.gz # 查看内容(不解压)tar -rvf archive.tar newfile # 追加文件(仅 .tar)
# 参数说明:# c=创建 z=gzip j=bzip2 J=xz v=详细 f=文件名 x=解压 t=列出8.2 zip / unzip
zip -r archive.zip dir/ # 压缩目录zip -e secret.zip file.txt # 加密压缩zip -r -9 archive.zip dir/ # 最高压缩率(0-9)unzip archive.zip # 解压unzip archive.zip -d /tmp/ # 解压到指定目录unzip -l archive.zip # 查看内容8.3 gzip / gunzip
gzip file.txt # 压缩(原文件被替换)gzip -k file.txt # 保留原文件gzip -9 file.txt # 最高压缩率gunzip file.txt.gz # 解压zcat file.txt.gz # 查看压缩文件内容(不解压)九、Shell 技巧
9.1 管道与重定向
# 重定向command > file.txt # 标准输出重定向到文件(覆盖)command >> file.txt # 追加command 2> error.log # 标准错误重定向command > out.log 2>&1 # 标准输出和错误都重定向到同一文件command > /dev/null 2>&1 # 丢弃所有输出command < input.txt # 标准输入重定向
# 管道(前一个命令的输出作为后一个的输入)ls -l | grep ".txt" # 过滤cat file.txt | wc -l # 统计行数ps aux | grep nginx | grep -v grep # 多级过滤dmesg | tail -20 # 取最后 20 行command1 | tee output.txt | command2 # 同时输出到文件和管道9.2 命令替换
# 反引号(旧语法)DATE=`date +%Y%m%d`
# $()(推荐,支持嵌套)DATE=$(date +%Y%m%d)FILES=$(find . -name "*.py" | wc -l)echo "Found $FILES Python files"
# 创建带日期的备份tar -czvf backup-$(date +%Y%m%d).tar.gz /important/9.3 快捷操作
# 大括号扩展echo file{1..5}.txt # file1.txt file2.txt ... file5.txtecho {a,b,c}.py # a.py b.py c.pymkdir -p project/{src,tests,docs} # 一次创建多个目录
# 命令历史history # 查看历史命令!! # 执行上一条命令!100 # 执行第 100 条历史命令!grep # 执行最近以 grep 开头的命令!$ # 上一条命令的最后一个参数
# 通配符*.txt # 所有 .txt 文件file?.txt # file1.txt, file2.txt ...[abc].txt # a.txt, b.txt, c.txt[0-9].txt # 0.txt 到 9.txt[^0-9]* # 不以数字开头的文件9.4 别名与环境变量
# 别名(通常写在 ~/.bashrc 或 ~/.zshrc)alias ll='ls -lh'alias la='ls -la'alias ..='cd ..'alias grep='grep --color=auto'alias ports='ss -tlnp'alias cls='clear'
# 环境变量export PATH=$PATH:/usr/local/bin # 临时添加 PATHexport MY_API_KEY="secret123" # 设置环境变量echo $PATH # 查看环境变量env # 查看所有环境变量printenv HOME # 查看特定环境变量9.5 实用组合命令
# 统计代码行数find . -name "*.py" -exec wc -l {} + | tail -1
# 找出最大的 10 个文件du -ah . | sort -rh | head -10
# 统计每种文件类型的数量find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn
# 批量重命名(.JPG -> .jpg)for f in *.JPG; do mv "$f" "${f%.JPG}.jpg"; done
# 快速创建临时文件和目录mktemp # 创建临时文件mktemp -d # 创建临时目录
# 一行 HTTP 服务器(共享文件)python3 -m http.server 8080
# 查看公网 IPcurl ifconfig.mecurl ip.sb
# 测试网速curl -o /dev/null -w "Speed: %{speed_download} bytes/s\n" http://example.com/largefile十、系统信息
10.1 硬件与系统
uname -a # 内核版本和系统信息uname -r # 仅内核版本hostname # 主机名uptime # 运行时间和负载date # 当前时间date +"%Y-%m-%d %H:%M" # 格式化日期
# CPUlscpu # CPU 信息nproc # CPU 核心数cat /proc/cpuinfo # 详细 CPU 信息
# 内存free -h # 内存使用概况cat /proc/meminfo # 详细内存信息
# 磁盘lsblk # 块设备列表hdparm -I /dev/sda # 硬盘详细信息
# 系统版本cat /etc/os-release # 操作系统版本lsb_release -a # Ubuntu/Debian 版本信息10.2 日志查看
# systemd 日志journalctl # 查看所有日志journalctl -u nginx # 查看指定服务日志journalctl -u nginx -f # 实时追踪服务日志journalctl --since today # 今天的日志journalctl --since "1 hour ago" # 最近 1 小时journalctl -p err # 仅错误级别journalctl -b # 本次启动的日志
# 传统日志cat /var/log/syslog # 系统日志(Debian/Ubuntu)cat /var/log/messages # 系统日志(RHEL/CentOS)tail -f /var/log/nginx/access.log # Nginx 访问日志dmesg # 内核环缓冲日志dmesg | tail -20 # 最近 20 条内核日志十一、包管理
11.1 Debian / Ubuntu (apt)
apt update # 更新软件源apt upgrade # 升级已安装的包apt install nginx # 安装软件apt remove nginx # 卸载(保留配置)apt purge nginx # 卸载(删除配置)apt autoremove # 清理不需要的依赖apt search keyword # 搜索软件apt show nginx # 显示包信息apt list --installed # 列出已安装的包11.2 RHEL / CentOS (dnf/yum)
dnf check-update # 检查更新dnf install nginx # 安装dnf remove nginx # 卸载dnf search nginx # 搜索dnf list installed # 已安装列表dnf clean all # 清理缓存速查表:最常用的 20 个命令
| 命令 | 用途 | 示例 |
|---|---|---|
ls | 列出目录 | ls -lah |
cd | 切换目录 | cd /var/log |
grep | 搜索文本 | grep -rn "error" . |
find | 查找文件 | find . -name "*.py" |
cat | 查看文件 | cat -n file.txt |
tail | 查看尾部 | tail -f app.log |
ps | 查看进程 | ps aux | grep nginx |
kill | 终止进程 | kill -9 1234 |
chmod | 修改权限 | chmod 755 script.sh |
chown | 修改所有者 | chown user:group file |
tar | 压缩/解压 | tar -xzvf archive.tar.gz |
curl | HTTP 请求 | curl -L https://example.com |
df | 磁盘使用 | df -h |
du | 目录大小 | du -sh /var/* |
top | 进程监控 | top |
systemctl | 服务管理 | systemctl restart nginx |
sed | 文本替换 | sed -i 's/old/new/g' file |
awk | 文本分析 | awk '{print $1}' file |
ss | 网络连接 | ss -tlnp |
journalctl | 系统日志 | journalctl -u nginx -f |
掌握这些命令并不需要死记硬背——实际使用中遇到问题再查、再学,用着用着就记住了。建议把本文加入书签,需要时随时搜索查阅。如果想进一步提高 Shell 功力,可以参考本站的 Zsh 安装与配置教程 和 Docker Compose 实战指南。
Linux 常用命令速查手册:从入门到精通的 100+ 命令 | 2026 服务器运维必备
https://971918.xyz/posts/docs/linux-commands-cheatsheet/