每节只精讲 3~5 个 ★ 必会命令,其余进速查表。这一页对应课程标准「常用命令速查表」特色资源, 按 12 个项目分组,每个命令标了分级:★必会☆理解○了解。 下方用生活类比讲透「为什么」,让命令不再是一串要背的字母。
| 命令 | 作用 | 分级 |
|---|---|---|
pwd | 显示当前所在目录(你在哪) | ★ |
ls -l | 列目录内容(详细信息) | ★ |
cd | 切换目录 | ★ |
cp / mv / rm | 复制 / 移动改名 / 删除 | ★ |
mkdir / touch | 建目录 / 建空文件 | ★ |
man / --help | 查帮助(不会就问它) | ☆ |
ln -s | 建软链接(快捷方式) | ○ |
ls -l 长格式(权限、大小、时间)ls -a 含隐藏文件(以 . 开头)ls -h 大小用 K/M/G 显示ls -R 递归列出子目录cp -r 递归复制整个目录cp -i 覆盖前先询问rm -r 递归删目录(危险)rm -i 删每一个前先问mkdir -p 一次建好多级目录ls -lh 一眼看清每个文件多大cp -r src/ dst/ 整目录复制mkdir -p a/b/c 三级目录一次建好rm -ri old/ 递归 + 询问,删前确认ln -s /var/www site 建软链接当快捷方式mv -i a.txt b.txt 改名,重名先问| 命令 | 作用 | 分级 |
|---|---|---|
uname -a | 看全部系统信息(内核/主机/架构) | ★ |
cat /etc/os-release | 看发行版名称与版本(CentOS/Ubuntu) | ★ |
runlevel | 看当前运行级别(3=多用户,5=图形) | ☆ |
systemctl isolate multi-user.target | 切换运行级别(字符界面) | ☆ |
shutdown -h now | 立即关机 | ★ |
shutdown -r +10 | 10 分钟后重启 | ☆ |
su - 用户名 | 切换用户并加载其环境 | ★ |
whoami / who / w | 看当前/所有登录用户与在干嘛 | ☆ |
uname -a 全部:内核名/主机名/内核版本/架构uname -r 只看内核版本(如 5.14.0)uname -m 看 CPU 架构(x86_64 / aarch64)uname -s 内核名(Linux)-h 关机(halt)-r 重启(reboot)now 立刻执行;+10 10 分钟后-c 取消已计划的关机su - 切到 root 并重置环境(像重新登录)su 用户 切到该用户但保留当前环境who 谁登录了、从哪台机器、几点登的w 在 who 基础上多一行『正在跑什么』uname -r 升级内核前先确认当前版本cat /etc/os-release | grep PRETTY 一眼看发行版全称shutdown -r now 改完配置需要重启生效su - 然后 whoami 验证确实是 rootw 排查『谁把负载跑满了』runlevel 看 N 5 表示当前是图形级别| 命令 | 作用 | 分级 |
|---|---|---|
grep | 按关键字搜文本 | ★ |
| 管道 | 把上一条输出喂给下一条 | ★ |
head / tail | 看头 / 看尾(tail -f 实时跟日志) | ★ |
sort / uniq -c | 排序 / 去重计数 | ★ |
awk | 按列取字段、做统计 | ☆ |
sed | 流编辑、批量替换 | ☆ |
cut / tr | 切列 / 换字符 | ○ |
sed 把文件一行一行读进来,对满足「地址」的行执行「命令」,再输出。默认只把结果打到屏幕,不碰原文件——所以放心练。
sed [选项] '地址 命令' 文件3 第3行 · 1,5 1–5行 · /模式/ 匹配行 · $ 末行 · 省略=全部s 替换 · d 删行 · p 打印 · a/i 行后/前插入s/a/b/ 换首个 · s/a/b/g 全局 · s#a#b#g 换分隔符避冲突sed 's/旧/新/g' f.txt输出替换结果(不改原文件,可接着 | 管道)sed -i 's/旧/新/g' f.txt-i 原地改文件;危险,正式用前先 cp 备份或 -i.baksed -n '10,20p' f.txt-n 静默 + p 打印:只看第 10–20 行sed '5d' f.txt删掉第 5 行(d 删除匹配行)sed 's/^/# /' f.txt^ 代表行首,给每行前面加注释符awk 按分隔符把每行切成字段:$1 第1列、$NF 最后一列、$0 整行;NR 行号、NF 当前行列数。处理 /etc/passwd、算求和/均值、统计关键字次数都极好用。
awk [选项] '模式 {动作}' 文件$1 $2 … $NF 列 · $0 整行 · NR 行号 · NF 列数NR==3 第3行 · /模式/ 匹配 · $3>100 第3列>100-F: 以冒号分列(处理 /etc/passwd)awk '{print $1, $3}' f.txt打印第 1、3 列(默认按空白切分)awk -F: '{print $1}' /etc/passwd以冒号分列,列出所有用户名awk '{s+=$1} END{print s}' n.txt累加第1列求和;END 收尾时输出awk '$3>100{print $0}' log.txt只输出第3列大于 100 的那几行awk '/error/{c++} END{print c}' app.log统计日志里 error 出现了多少次-n 静默:只输出被 p 命令指定的行-i 原地修改文件(先用 -i.bak 留备份)-e 串联多个编辑脚本-r / -E 支持扩展正则(() | 不必转义)-F: 指定字段分隔符(如 -F, 处理 CSV)-f 从脚本文件读取 awk 程序-v k=v 把变量传进 awk 内部s/旧/新/ 替换(末尾加 g 全局替换)d 删除匹配的行p 打印(配合 -n 用)a\文本 行后追加 · i\文本 行前插入BEGIN{…} 读文件前执行(打表头)END{…} 读完后执行(求和 / 均值)print / printf 输出到屏幕NR / NF / $1… 行号 / 列数 / 列值| 命令 | 作用 | 分级 |
|---|---|---|
find / -name '*.log' | 按名查找文件 | ★ |
find . -type f -size +10M | 找大于 10M 的普通文件 | ☆ |
find . -mtime -7 -exec rm {} \; | 删 7 天内改过的文件 | ○ |
file 文件名 | 识别真实文件类型(不受后缀骗) | ☆ |
grep -rin 'err' /var/log | 递归、忽略大小写、带行号搜 | ★ |
sort -t: -k3 -n | 按第3列数字排序(如 uid) | ☆ |
uniq -c | 去重并统计出现次数 | ★ |
cut -d: -f1 | 以 : 分列,取第 1 列 | ☆ |
date +%F / date -d | 格式化日期 / 算相对日期 | ☆ |
echo -e 'a\nb' | 输出并解释转义(换行等) | ○ |
-name '模式' 按文件名(支持通配符)-type f/d 限定普通文件 / 目录-size +10M 大于 10M;-size -1k 小于 1K-mtime -7 7 天内改过;+7 超 7 天-exec 命令 {} \; 对结果逐个执行-i 忽略大小写-r 递归目录-n 显示行号-v 反向(不含关键字的行)-E 扩展正则(| 不用转义)sort -n 按数值而非字典序sort -r 倒序sort -k3 按第 3 列排uniq -c 统计重复次数(先 sort)cut -d: -f1,3 取第1、3列date +%F 输出 2026-10-19date +%Y%m%d 输出 20261019(备份命名常用)date -d '-1 day' +%F 昨天的日期echo -e 让 \n \t 等转义生效echo -n 末尾不换行find / -name nginx.conf 定位配置文件在哪find . -type f -size +100M 揪出占空间的大文件grep -rin 'timeout' /etc/ | less 全配置查关键字sort -t: -k3 -n /etc/passwd 按 uid 排序看用户cut -d: -f1 /etc/passwd 列出所有用户名date +%Y%m%d 给备份文件起名 backup_20261019.tar.gzecho -e 'line1\nline2' 一行命令输出两行| 命令 | 作用 | 分级 |
|---|---|---|
useradd / passwd | 建用户 / 设密码 | ★ |
chmod 755 | 改权限(数字法最常用) | ★ |
chown | 改属主 / 属组 | ★ |
sudo | 临时提权(最小权限原则) | ☆ |
umask | 默认权限掩码 | ○ |
chmod u+x 给属主加执行权chmod g-w 去掉属组的写权chmod 755 数字法:属主全权、其他只读+执行chown 用户:组 同时改属主与属组chown -R 递归改整个目录sudo -i 切到 root 环境(慎重)sudo -u 用户 命令 以某个用户身份执行useradd -m 建用户并同时建家目录useradd -G 组 把用户加入附加组chmod +x deploy.sh 让脚本能被执行chmod 644 f.txt 本人可读写、他人只读chown -R www:www /var/www 把站点目录交给 www 用户sudo systemctl restart nginx 提权重启服务umask 022 新文件默认 644、目录默认 755| 命令 | 作用 | 分级 |
|---|---|---|
usermod -aG 组 用户 | 把用户追加进附加组(不改原有组) | ★ |
usermod -l 新 旧 | 改用户名 | ○ |
userdel -r 用户 | 删用户并连家目录一起删 | ☆ |
groupadd 组名 | 新建用户组 | ☆ |
gpasswd -a 用户 组 | 把用户加入组(同 usermod -aG) | ☆ |
chgrp 组 文件 | 改文件属组 | ☆ |
setfacl -m u:用户:rwx | 给某用户单独授权(绕过 rwx 三位) | ☆ |
getfacl 文件 | 查看文件的 ACL 明细 | ☆ |
vim 文件 | 终端编辑器(上课绕不开) | ★ |
-aG 组 用户 追加附加组(务必带 -a,否则覆盖)-l 新 旧 改登录名-L 锁账户(不能登录);-U 解锁-d 目录 -m 改家目录并搬数据groupadd 组 建新组groupdel 组 删组(组内无人再删)gpasswd -a 用户 组 加组成员chgrp 组 文件 只改属组setfacl -m u:tom:rwx f 给用户 tom 单独授权setfacl -m g:dev:rx f 给 dev 组授权setfacl -R -m ... 递归授权整个目录setfacl -x u:tom f 收回该条 ACLgetfacl f 看清谁有什么权i 进入插入模式开始打字Esc 回到命令模式:w 保存;:q! 不存强退:wq 保存并退出/关键字 搜索,n 跳下一个usermod -aG wheel tom 让 tom 能用 sudo(追加!)userdel -r tom 离职清理,连家目录删掉groupadd dev && gpasswd -a tom dev 建组并加人setfacl -m u:tom:rwx /share 给 tom 单独开 /share 权限getfacl /share 确认 ACL 已生效vim /etc/hosts 改完 :wq 保存退出| 命令 | 作用 | 分级 |
|---|---|---|
lsblk | 看块设备与挂载点(树状) | ★ |
blkid | 看分区 UUID 与文件系统类型 | ☆ |
fdisk -l / parted -l | 看 / 分区硬盘 | ☆ |
mkfs.ext4 / mkfs.xfs | 格式化(建文件系统) | ★ |
mount /dev/sdb1 /mnt | 把分区挂到目录 | ★ |
umount /mnt | 卸载(用完再摘) | ★ |
df -h | 看各分区还剩多少空间 | ★ |
du -sh * | 看目录下各文件/夹占多大 | ☆ |
xfs_quota -x -c 'limit bsoft=100m tom' /home | 给用户限额 | ○ |
mdadm --create | 把多块盘组软 RAID | ○ |
pvcreate/vgcreate/lvcreate | LVM 建物理卷/卷组/逻辑卷 | ○ |
lsblk 树状看磁盘/分区/挂载点blkid /dev/sdb1 看该分区 UUID(写 fstab 用)fdisk -l 列所有磁盘与分区表parted /dev/sdb mklabel gpt 建 GPT 分区表mkfs.xfs /dev/sdb1 格式化为 XFSmkfs.ext4 /dev/sdb1 格式化为 ext4mount -t xfs /dev/sdb1 /data 挂载并指定类型mount -a 按 /etc/fstab 重挂全部umount /data 卸载前确认没人占用xfs_quota -x -c 'report' /home 查配额mdadm -C /dev/md0 -l1 -n2 /dev/sd[b-c]1 组 RAID1pvcreate /dev/sdb1 初始化物理卷vgcreate vg0 /dev/sdb1 建卷组lvcreate -L 10G -n lv0 vg0 建 10G 逻辑卷lvextend -L +5G /dev/vg0/lv0 在线扩容lsblk 先看清新盘是 sdb 还是 sdcmkfs.xfs /dev/sdb1 格式化后才能真正用mkdir /data && mount /dev/sdb1 /data 挂上才能读写df -h /data 确认挂载成功、空间可见du -sh /var/log 看日志目录吃了多少空间lvextend -L +5G /dev/vg0/lv0 磁盘快满时在线扩xfs_growfs /data XFS 扩容后让文件系统认新大小| 命令 | 作用 | 分级 |
|---|---|---|
ps aux / top | 看进程与资源占用 | ★ |
systemctl start/enable | 启服务 / 设开机自启 | ★ |
journalctl -u | 看某服务日志 | ★ |
dnf install | 装软件包 | ★ |
kill -9 | 强杀进程(先用普通 kill) | ☆ |
nohup | 退出终端也不中断 | ☆ |
ps aux 看全部进程与 CPU/内存占用top -p PID 只盯着某个进程systemctl enable 设为开机自启systemctl --now 启动的同时设自启journalctl -f 实时跟随日志输出kill PID 正常结束(先试它)kill -9 PID 强制杀死(最后的手段)dnf install/remove 安装 / 卸载软件包dnf list installed 查看已装包nohup 命令 & 关掉终端也继续跑ps aux | grep nginx 查 nginx 进程是否在跑systemctl enable --now nginx 启动并设开机自启journalctl -u nginx -f 实时看服务日志排错kill 1234 先正常结束,不行再 kill -9 1234nohup ./app.sh & 后台运行,输出进 nohup.out| 命令 | 作用 | 分级 |
|---|---|---|
jobs | 看当前终端的后台任务列表 | ☆ |
fg %1 / bg %1 | 把任务调回前台 / 放回后台 | ☆ |
命令 & | 启动时直接丢后台 | ☆ |
nohup 命令 & | 关终端也不中断 | ☆ |
crontab -e | 编辑当前用户的定时任务 | ☆ |
dnf -y install | 装包不再逐项问 y | ★ |
dnf groupinstall | 按『软件组』批量装(如开发工具) | ○ |
命令 & 启动即后台,立刻拿回终端jobs 列出本终端后台任务及编号 %1fg %1 把 1 号任务调回前台bg %1 把暂停的任务放回后台跑Ctrl+Z 暂停前台任务(再 bg 后台跑)crontab -e 编辑当前用户任务crontab -l 列出已有任务0 2 * * * /backup.sh 每天 2 点跑dnf -y install 包 自动确认装dnf groupinstall '开发工具' 一组开发包dnf provides 命令 查哪个包装了它dnf history undo N 撤销第 N 次安装./server & 后台跑服务,终端还能干别的jobs 看到 [1] 运行中,fg %1 调回前台nohup ./app.sh & 关掉 SSH 它也继续跑crontab -e 加 0 3 * * * rsync ... 每日 3 点备份dnf -y install httpd 一行装好 Web 服务| 命令 | 作用 | 分级 |
|---|---|---|
ip addr / ip route | 看 IP 与路由 | ★ |
ss -tlnp | 看监听端口(排障必用) | ★ |
ping / traceroute | 连通性与路径排查 | ★ |
nmcli / nmtui | 配网络(命令 / 图形) | ☆ |
nslookup / dig | 测 DNS 解析 | ☆ |
firewall-cmd | 防火墙放行 / 富规则 | ★ |
curl / wget | 下载 / 测 HTTP 服务 | ☆ |
ip addr show 看网卡与 IP 地址ip route 看路由表(网关走向)ss -tlnp 看监听端口 + 对应进程ss -ant 看所有 TCP 连接ping -c 4 只发 4 次包测连通--add-port 放行某端口(如 80/tcp)--permanent 规则永久生效firewall-cmd --reload 重新加载规则curl -I 只看 HTTP 响应头dig 域名 查 DNS 解析结果ip addr | grep inet 快速看本机有哪些 IPss -tlnp | grep :80 确认 80 端口是否在监听curl -I localhost 测本地 Web 服务是否起来firewall-cmd --add-port=80/tcp --permanent 放行 Web 端口dig baidu.com 验证域名能否正常解析| 命令 | 作用 | 分级 |
|---|---|---|
nmcli connection show | 看网络连接(网卡配置) | ☆ |
nmcli con mod eth0 ipv4.addresses 192.168.1.10/24 | 命令行改 IP | ☆ |
hostnamectl set-hostname srv | 改主机名(永久) | ☆ |
dhcpd -t | 校验 dhcpd.conf 语法 | ○ |
testparm | 校验 smb.conf 语法 | ○ |
smbpasswd -a 用户 | 建 Samba 专用密码 | ○ |
named-checkconf / named-checkzone | 校验 DNS 配置与区域 | ○ |
rndc reload | 重载 DNS 配置(不重启) | ○ |
apachectl configtest | 校验 Apache 配置 | ○ |
firewall-cmd --list-all | 看当前防火墙规则 | ★ |
nmcli con show 列出所有连接nmcli con up eth0 启用连接nmcli con mod eth0 ipv4.method manual 改手动配 IPnmcli con mod eth0 ipv4.gateway 192.168.1.1 设网关nmcli con mod eth0 +ipv4.dns 8.8.8.8 加 DNSdhcpd -t 配完 DHCP 先测语法testparm 测 smb.conf 有无错smbpasswd -a tom 给 tom 设 Samba 密码named-checkconf 测主配置;named-checkzone 域 文件 测区域rndc reload 改完 DNS 重载生效apachectl configtest 测 Apache 配置--add-port=80/tcp --permanent 放行端口--add-service=http 按服务名放行--list-all 看全部规则--remove-port=22/tcp 收回端口--add-rich-rule=... 富规则做精细控制--runtime-to-permanent 把临时规则落盘nmcli con mod eth0 ipv4.addresses 192.168.1.10/24 && nmcli con up eth0 命令行配静态 IPhostnamectl set-hostname web01 改完重登录即生效dhcpd -t 改完dhcpd.conf先验语法再起服务testparm && systemctl restart smb 校验通过后重启 Sambanamed-checkzone example.com /var/named/example.com.zone 区域写对再 rndc reloadfirewall-cmd --add-service=http --permanent && firewall-cmd --reload 放行 Webfirewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 端口转发