从“只会点鼠标”到“爱上敲命令”:Linux基础入门 三剑客和lvm
一句话总结:今天学了怎么在 Linux 里"找数据、改数据、切数据",以及怎么给系统加一块新硬盘。
一、三剑客:grep、sed、awk
Linux 文本处理有三把瑞士军刀,记住三个词就行:
| 工具 | 干的事 | 一句话记法 |
|---|---|---|
| grep | 找数据 | 在文件里搜关键字 |
| sed | 改数据 | 替换/删除/插入内容 |
| awk | 切数据 | 按列提取、格式化输出 |
1. grep —— 内容过滤与查找
就像在书里用荧光笔划线,把含有关键词的行标出来。
-v:反向匹配(不要什么)
grep -v "error" app.log
打印
app.log中不包含"error" 的所有行。相当于「过滤掉 error 行」。
-n:显示行号
grep -n "timeout" app.log
输出类似
45:Connection timeout— 告诉你 "timeout" 出现在第 45 行,方便定位。
-r:递归查找
grep -r "localhost" /etc/
在
/etc/目录及所有子目录的所有文件中,搜 "localhost"。不用一个一个文件翻。
-E:扩展正则(支持 | 或)
grep -E "error|warning" app.log
查找包含"error" 或 "warning"的行。
|表示"或"。
2. sed —— 流编辑器
sed 像一个自动修改流水线,你告诉它改什么,它批量处理。
替换内容
sed -i 's/192.168.1.1/10.0.0.1/g' config.conf
把配置文件里所有的旧 IP 换成新 IP。
s表示替换(substitute),g表示全局(global)。
删除行
sed -i '4d' test.txt
直接删除第 4 行。
d就是 delete。
插入行(上方)
sed -i '3i\# 这是新添加的注释' config.conf
在第 3 行上面插入一行。原第 3 行及之后顺延。
i是 insert。
追加行(下方)
sed -i '3a\new_port=8080' config.conf
在第 3 行下面追加一行。
a是 append。
💡
-i参数表示直接修改文件,不加-i只是预览效果,不改文件本身。
3. awk —— 格式化与数据处理
awk 像一个表格切割机,默认按空格把一行切成多列,然后挑出你要的列。
按列打印
awk '{print $1,$3}' test.txt默认以空格分隔,打印每行的第 1 列和第 3 列。
$1是第1列,$2是第2列,$0是整行。
指定分隔符
awk -F':' '{print $1,$3}' /etc/passwd以冒号
:分隔,提取用户名(第1列)和 UID(第3列)。-F指定分隔符。
按关键字过滤
awk '/root/{print $1,$3}' /etc/passwd只处理包含 "root" 的行,打印其第1和第3列。比
grep+awk两步更高效。
按条件过滤
awk 'NF==2{print $0}' data.txt只处理恰好有 2 列的行。
NF是 awk 内置变量,表示"当前行有几列"。
4. 正则表达式基础(匹配规则)
正则表达式就像搜索规则说明书,告诉工具你要找什么样模式的文字。
| 符号 | 含义 | 示例 | 效果 |
|---|---|---|---|
[^abc] | 取反(不要 abc) | grep '[^0-9]' test.txt | 找包含非数字字符的行 |
^ | 行首 | grep '^root' /etc/passwd | 找以 "root"开头的行 |
$ | 行尾 | grep 'bash$' /etc/passwd | 找以 "bash"结尾的行 |
^$ | 空行 | grep -v '^$' config.conf | 过滤掉空行(看配置神器) |
{m,n} | 重复次数 | grep -E 'a{2,4}' test.txt | 找连续 2~4 个 a 的行 |
实用技巧:
grep -v '^$' 文件名— 去掉配置文件中的空行,只看有效内容。
二、存储管理
1. 核心逻辑:五步走
用一块新硬盘,就像搬进新家装一个柜子:
加磁盘 → 识别设备 → 分区(可选) → 格式化 → 挂载
| 步骤 | 对应操作 | 生活类比 |
|---|---|---|
| ① 加磁盘 | 虚拟机添加新硬盘 | 买了个新柜子搬回家 |
| ② 系统识别 | lsblk查看 | 拆开包装,知道柜子到了 |
| ③ 分区 | fdisk /dev/sdb | 给柜子分几个格子 |
| ④ 格式化 | mkfs.ext4 /dev/sdb1 | 给格子铺上地板 |
| ⑤ 挂载 | mount /dev/sdb1 /mnt/data | 打开柜门,开始用 |
常用查看命令
df -h # 看已挂载的磁盘用了多少(人类友好格式) du -sh /目录 # 看某个目录实际占多大 blkid # 查看所有磁盘的设备ID(UUID) lsblk # 树状查看磁盘和分区结构 dd if=/dev/zero of=test.img bs=1M count=100 # 创建一个100MB的测试文件
2. 分区工具
fdisk(MBR分区表,最大2TB)
fdisk -l # 查看系统所有磁盘 fdisk /dev/sdb # 进入交互式分区界面
进入后常用按键:
m → 查看帮助 n → 新建分区 p → 查看分区效果 w → 保存并退出(重要!不w不生效)
gdisk(GPT分区表,支持超过2TB)
gdisk 是 fdisk 的升级版,用法基本一样,适合大容量磁盘。
3. 格式化(创建文件系统)
分区完成后,需要"铺地板"才能存数据:
mkfs.ext4 /dev/sdb1 # 格式化为 ext4(Linux最经典,兼容性好) mkfs.xfs /dev/sdb1 # 格式化为 xfs(高性能,大文件友好)
CentOS 7+ 默认用 xfs,Ubuntu 默认用 ext4。
4. 挂载(使用磁盘)
临时挂载(重启失效)
mount /dev/sdb1 /mnt/data # 挂载 umount /dev/sdb1 # 卸载(设备名或挂载点都行)
永久挂载(重启不丢)
编辑/etc/fstab文件,每行格式:
设备名(UUID) 挂载目录 文件系统类型 挂载选项 是否备份(0) 是否自检(0)
示例:
UUID=xxxx-xxxx /mnt/data ext4 defaults 0 0
mount -a # 让 fstab 配置立即生效 reboot # 重启后自动挂载验证
⚠️强烈建议用 UUID 代替设备名(如
/dev/sdb1),因为重启后设备名可能变化,UUID 是唯一的、不变的。
3. 磁盘阵列(RAID)
RAID 就是把多块硬盘组合起来,要么更快、要么更安全。
| RAID 级别 | 别名 | 最少盘数 | 速度 | 安全性 | 空间利用率 |
|---|---|---|---|---|---|
| RAID 0 | 条带化 | 2 | 🚀 极快(并行读写) | ❌ 坏一块全丢 | 100% |
| RAID 1 | 镜像 | 2 | 正常 | ✅ 坏一块还能用 | 50% |
| RAID 5 | 分布式奇偶校验 | 3 | 不错 | ✅ 允许坏一块 | ~75% (N-1) |
RAID 0:像两个人一起搬砖 — 快,但一个人摔了砖全碎
RAID 1:像写两份一样的笔记 — 安全,但纸用得多一倍
RAID 5:像三个人干活,一个人当后备 — 又快又安全,但需要点技术
4. 逻辑卷管理(LVM)
LVM 是一个灵活的分区系统,可以在不关机、不丢数据的情况下动态调整磁盘空间大小。
三层结构(像俄罗斯套娃)
物理卷(PV) → 卷组(VG) → 逻辑卷(LV) 硬盘/分区 大池子 最终使用的"虚拟盘"
① 物理卷(PV)管理
pvcreate /dev/sdb # 初始化磁盘为物理卷 pvs # 简略查看所有PV pvdisplay /dev/sdb # 查看某个PV的详细信息 pvremove /dev/sdb # 从LVM中移除
② 卷组(VG)管理
vgcreate myvg /dev/sdb # 创建卷组,把PV加进去 vgs # 简略查看 vgextend myvg /dev/sdc # 向卷组加入新磁盘(扩容!) vgreduce myvg /dev/sdc # 从卷组移除磁盘 vgremove myvg # 删除卷组
③ 逻辑卷(LV)管理
lvcreate -L 10G -n mylv myvg # 从卷组划出10G的逻辑卷 lvs # 简略查看 lvextend -L +5G myvg/mylv # 给逻辑卷增加5G(在线扩容!) lvreduce -L -5G myvg/mylv # 缩减(⚠️ 必须先缩小文件系统) lvremove myvg/mylv # 删除逻辑卷(数据全丢!)
🎯LVM 最爽的地方:硬盘空间不够了?加块新硬盘,
vgextend加进卷组,lvextend扩容逻辑卷 —全程不用重启,数据不丢!
今日干货总结
| 场景 | 用啥 | 一句话命令 |
|---|---|---|
| 搜关键词 | grep | grep -rn "关键字" /路径 |
| 批量替换 | sed | sed -i 's/旧/新/g' 文件 |
| 提取某列 | awk | awk '{print $1,$3}' 文件 |
| 看磁盘使用 | df | df -h |
| 新硬盘上线 | 五步走 | lsblk → fdisk → mkfs → mount → /etc/fstab |
| 空间不够了 | LVM | vgextend → lvextend搞定 |
记不住没关系,收藏这篇,用的时候回来查就行 😄
